Konfiguracje Formatów

Pełne opcje renderowania dla każdego formatu

Każdy dokument otwiera się z implementacją BaseConfig. Przekaż ją do OpenDocumentAsync lub pozwól katalogowi formatów utworzyć domyślną. Wszystkie klasy poniżej znajdują się w przestrzeni nazw Doconut.

Ta pojedyncza przestrzeń nazw jest nowa. Poprzednia biblioteka .NET Standard rozkładała te typy na Doconut.Configs, Doconut.Configs.View i Doconut.Models. Nazwy typów nie uległy zmianie — w większości plików jedyną zmianą jest usunięcie dwóch linii using. Zobacz przewodnik migracji.

csharp
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
    AllowSearch = true,
    AllowCopy   = true,
    ImageResolution = 150
});

Dziedziczenie i zagnieżdżone ustawienia PDF

Każdy format dziedziczy pięć właściwości BaseConfig. Formaty, które mogą przekierowywać przez PDF, udostępniają zagnieżdżony PdfConfig. W WordConfig, ExcelConfig i PptConfig właściwości AllowSearch i AllowCopy są właściwościami wygodnymi, które odczytują i zapisują zagnieżdżony PdfConfig.

DefaultRender = true wybiera natywny renderer formatu. W formatach z przekierowaniem PDF, false najpierw konwertuje do pamięciowego PDF, a następnie używa przeglądarki PDF. Ta ścieżka jest często przydatna do wyszukiwania po współrzędnych tekstu, ale wymaga dodatkowej konwersji.

O ile nie zaznaczono inaczej, tabele pokazują domyślne wartości konstruktorów/właściwości. Automatyczny katalog formatów celowo nadpisuje dwie z nich: tworzy ExcelConfig z SplitWorksheets = true oraz MhtConfig z DefaultRender = false.

BaseConfig

TypWłaściwośćDomyślneZachowanie
intImageResolution00 używa domyślnej wartości formatu. Poprawny zakres to 25‑300 DPI; nieprawidłowe przypisania są ignorowane.
stringDocumentCulture""Ustawienie regionalne dla dat i liczb. Niepuste wartości są przycinane; puste przypisania są ignorowane.
stringPassword""Hasło dokumentu chronionego. DocOptions.Password jest tutaj kopiowane automatycznie.
boolShowUItrueWłaściwość kompatybilności; bieżący renderer nie używa jej do sterowania paskiem narzędzi przeglądarki.
boolCachePagestrueBuforuje renderowane obrazy stron dla sesji dokumentu.

PdfConfig

Formaty: PDF. Domyślna DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertruePrzełącznik kompatybilności. Bieżąca fabryka używa natywnej przeglądarki PDF.
boolAllowSearchfalseTworzy/używa indeksu wyszukiwania tekstu w PDF. Wymaga licencji Search dla żądań.
boolAllowCopyfalseZezwala na operacje zaznaczania/kopiowania tekstu.
boolExtractHyperlinksfalseWyodrębnia prostokąty linków dla nakładek po stronie klienta.
intHyperlinksPageCount0Maksymalna liczba stron skanowanych w poszukiwaniu linków; 0 oznacza wszystkie strony.
boolCompressImagesfalseKompresuje osadzone obrazy przed renderowaniem.
intCompressQuality100Jakość JPEG używana przy włączonej kompresji.
boolResizeImagesfalseZmienia rozmiar osadzonych obrazów przed renderowaniem.
intResizeResolution300Docelowa DPI dla zmienionych rozmiarowo obrazów.
boolCompressFastfalsePreferuje szybszą, niższej jakości ścieżkę kompresji.
boolFixInvalidImagesfalsePróbuje naprawić nieprawidłowe osadzone obrazy.
boolSplitSegmentsfalseŁączy ponownie słowa podzielone na segmenty linii, aby poprawić wyszukiwanie/kopiowanie.

showHyperlinks w ViewerConfig steruje nakładką po stronie klienta, natomiast ExtractHyperlinks kontroluje wyodrębnianie po stronie serwera. Włącz oba.

WordConfig

Formaty: DOC, DOCX, DOCM, DOT, DOTX, DOTM, RTF, ODT, OTT, XML. Domyślna DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywne renderowanie Word; false używa przekierowania PDF.
PdfConfigPdfConfignowa instancjaUstawienia używane w ścieżce PDF/wyszukiwania.
DocPaperSizePaperSizeA4Rozmiar papieru wyjściowego. Użyj Custom z szerokością/wysokością.
intPaperWidth595Niestandardowa szerokość w punktach.
intPaperHeight841Niestandardowa wysokość w punktach.
boolRemovePaperMarginfalseUsuwa marginesy stron dokumentu.
boolRenderPageColortrueZachowuje skonfigurowany w Wordzie kolor strony; false renderuje białe strony.
boolExportPdfAfalseUżywa archiwalnego PDF/A w ścieżce PDF.
Encoding?FileEncodingnullZastępuje kodowanie źródłowe.
stringFontInfo""Informacje o podstawianiu czcionek.
string[]?FontFoldersnullDodatkowe katalogi czcionek, szczególnie przydatne w Linux/containers.
boolAllowSearchfalseDeleguje do PdfConfig.AllowSearch.
boolAllowCopyfalseDeleguje do PdfConfig.AllowCopy.
TableAutoFitBehaviorAutoFitAllTablesNoneNone, AutoFitToContents lub AutoFitToWindow.

ExcelConfig

Formaty: XLS, XLSX, XLSM, XLSB, XLTX, XLTM, ODS, CSV. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywne renderowanie arkusza; false używa przekierowania do PDF.
PdfConfigPdfConfignowa instancjaUstawienia ścieżki PDF/wyszukiwania.
ExcelPaperSizePaperSizePaperA4Rozmiar papieru wyjściowego.
doublePaperMargins0.25Marginesy strony w calach.
boolPaperLandscapetrueRenderowanie arkusza w orientacji poziomej.
boolAutoFitContentsfalseAutomatyczne dopasowanie wysokości wierszy i szerokości kolumn.
boolRemoveEmptyContenttrueZacieśnia wyjście poprzez wykluczenie pustej zawartości.
boolCalculateFormulatruePonowne obliczanie formuł przed renderowaniem.
boolShowRowColumnHeaderstrueUwzględnia nagłówki wierszy i kolumn arkusza.
boolExportPdfAfalseUżywa PDF/A w ścieżce PDF.
boolSplitWorksheetsfalseUtrzymuje arkusze jako oddzielne grupy stron.
boolShowEmptyWorkSheetsfalseUwzględnia puste arkusze.
boolExportLandscapefalseWymusza eksport w orientacji poziomej.
boolExportOnePagePerSheetfalseDopasowuje każdy arkusz do jednej strony wyjściowej.
boolMemoryOptimizationPreferencetrueZmniejsza maksymalne zużycie pamięci, potencjalnie kosztem nieco mniejszej prędkości.
boolAutoTrimWorksheetRenderRangetrueRenderuje tylko widoczny używany zakres, gdy nie istnieje wyraźny obszar drukowania.
boolAutoTrimPreserveExistingPrintAreatrueZachowuje zdefiniowane w skoroszycie obszary drukowania podczas automatycznego przycinania.
string?PrintAreanullWyraźny zakres, np. "A1:Z100".
boolPrintGridlinesfalseDrukuje linie siatki arkusza.
boolPrintHeadingsfalseDrukuje nagłówki wierszy/kolumn.
List<string>SheetNamespustyOgranicza renderowanie do arkuszy o podanych nazwach.
CustomStyleCell?CustomStylesnullOpcjonalne nadpisania formatowania daty/liczby dziesiętnej/liczby całkowitej.
boolAllowSearchfalsePrzekazuje do PdfConfig.AllowSearch.
boolAllowCopyfalsePrzekazuje do PdfConfig.AllowCopy.

CustomStyleCell udostępnia CustomStyleDateTime, CustomStyleNumberDecimal i CustomStyleNumberInteger, wszystkie jako nullable strings.

new ExcelConfig() ustawia SplitWorksheets na false; otwarcie pliku Excel bez wyraźnej konfiguracji używa katalogu formatów, który ustawia ją na true.

PptConfig

Formaty: PPT, PPTX, PPTM, PPSX, PPSM, POT, POTX, POTM, ODP. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywne renderowanie slajdu; false używa przekierowania do PDF.
boolFastLoadfalseUnika renderowania pierwszego slajdu podczas otwierania; używa metadanych i renderuje na żądanie.
PdfConfigPdfConfignowa instancjaUstawienia zachowania PDF/wyszukiwania.
stringFontInfo""Informacje o podstawianiu czcionek.
string[]?FontFoldersnullDodatkowe katalogi czcionek.
boolAllowSearchfalsePrzekazuje do PdfConfig.AllowSearch.
boolAllowCopyfalsePrzekazuje do PdfConfig.AllowCopy.

Na systemach Linux i macOS renderowanie prezentacji przy użyciu bieżącego silnika wymaga libgdiplus oraz System.Drawing.EnableUnixSupport=true. Zainstaluj czcionki używane w prezentacji lub podaj FontFolders.

CadConfig

Formaty: DWG, DXF, DGN. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywne renderowanie CAD; false używa przekierowania do PDF.
PdfConfigPdfConfignowa instancjaUstawienia ścieżki PDF.
boolExportPdfAfalseWyjście archiwalne PDF/A.
boolShowColortrueKolor zamiast monochromatu.
boolWhiteBackgroundtrueBiałe zamiast czarnego tła.
shortLineWidth25Szerokość linii CAD.
boolShowLayoutsfalseRenderuje zakładki układów.
boolShowModeltrueRenderuje przestrzeń modelu.
boolCheck3DSolidtruePrzetwarza bryły 3D.
boolExportAllLayoutsfalseEksportuje wszystkie układy, nadpisując wybór modelu/układu.
boolLimitMinimumSizefalseStosuje MinimumSize.
intMinimumSize700Minimalny rozmiar wyjścia w pikselach.
boolLimitMaximumSizefalseStosuje MaximumSize.
intMaximumSize700Maksymalny rozmiar wyjścia w pikselach.
boolShowAllLayoutsDgnfalseUwzględnia wszystkie układy DGN.
boolAutomaticLayoutScalingtrueAutomatycznie skaluj układy.
floatPdfMargins0.5Margines PDF w calach.
RenderQualityQualityImageLowJakość rastrowa: Low, Medium lub High.
RenderQualityQualityTextMediumJakość tekstu: Low, Medium lub High.

EmailConfig

Formaty: EML, EMLX, MSG. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywne renderowanie e‑mail; false używa przekierowania do PDF.
PdfConfigPdfConfignew instanceUstawienia ścieżki PDF.
Encoding?EmailEncodingnullZastąp kodowanie wiadomości.
Encoding?SubjectEncodingnullZastąp kodowanie tematu.
Encoding?BodyEncodingnullZastąp kodowanie treści.
boolSkipExternalImagesfalseNie ładuj zdalnie odwoływanych obrazów. Zalecane dla niepewnych e‑maili.
boolRemoveLastWhitePagefalseUsuń końcową pustą stronę.
boolUseAntiAliasingfalseWłącz antyaliasing.
boolUseHighQualityRenderingfalsePreferuj czystsze, wolniejsze renderowanie.
TimeSpan?TimeZoneOffsetnullZastąp strefę czasową używaną dla dat.
boolForcePageSizefalseWymuś stałe wymiary strony.

ImageConfig, TiffConfig i PsdConfig

ImageConfig obsługuje JPG, JPEG, JPE, PNG, BMP, GIF, ICO, EPS, TGA, WEBP, CDR, CMX, DNG, EMF, WMF, AVIF i SVG. Jego domyślne DPI to 100.

KonfiguracjaWłaściwośćDomyślneZachowanie
ImageConfigMaxImagePixelSize3000Maksymalna szerokość/wysokość. 0 oznacza nieograniczone; wartości różne od zera poniżej 50 są ignorowane.
ImageConfigTransparentPngtrueZachowaj przeźroczystość PNG; false używa białego tła.
TiffConfigbrak dodatkowych właściwościDPI 200Używa tylko BaseConfig; obsługuje wielostronicowy TIFF.
PsdConfigMaxImagePixelSize3000Taka sama walidacja 0/minimum‑50 jak w ImageConfig; domyślne DPI to 100.

DicomConfig

Formaty: DCM, IMA. Domyślne efektywne DPI: 100. Wymaga wtyczki DICOM.

TypWłaściwośćDomyślneZachowanie
intHorizontalResolution100 efektywneJawne poziome DPI; w przeciwnym razie ImageResolution, potem 100.
intVerticalResolution100 efektywneJawne pionowe DPI; w przeciwnym razie ImageResolution, potem 100.
intAnimationFrameDelayMs100Opóźnienie klatki animacji wieloklatkowej; timing GIF używa jednostek 10 ms.
ushortLoopCount00 powoduje nieskończoną pętlę; wartości dodatnie zatrzymują po podanej liczbie.
DicomDisplayModeDisplayModeAnimationAndFramesAnimationOnly, FramesOnly lub połączony podgląd z klatkami statycznymi.

TxtConfig

Format: TXT. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
DocPaperSizePaperSizeA4Rozmiar papieru wyjściowego.
Encoding?FileEncodingnullnull używa UTF‑8.
stringFontInformation""Informacje o czcionce dla renderowania tekstu.

Użyj WordConfig, gdy zwykły tekst wymaga bardziej zaawansowanego układu strony.

ProjectConfig

Formaty: MPP, MPPX, MPX. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywny obraz Gantt; false używa ścieżki PDF opartej na tekście.
PdfConfigPdfConfignew instanceUstawienia ścieżki PDF.
boolExportPdfAtrueWyjście archiwalne PDF/A.
MppPaperSizePaperSizeLedgerRozmiar papieru wyjściowego projektu.
MppTimeScaleTimeScaleMonthsDays lub Months.
MppFormatPresentationFormatGanttChartGanttChart, TaskUsage, ResourceUsage, ResourceSheet lub TaskSheet.

Aby uzyskać dokładne wyszukiwanie po współrzędnych tekstu, użyj DefaultRender = false.

VisioConfig

Formaty: VSD, VSDX, VSS, VSSX, VST, VSTX, VDX, VSX, VSDM. Domyślne DPI: 200.

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywne renderowanie diagramu; false używa przekierowania do PDF.
PdfConfigPdfConfignew instanceUstawienia ścieżki PDF.
boolExportPdfAtrueWyjście archiwalne PDF/A.

HtmlConfig, EpubConfig, MhtConfig oraz XpsConfig

Wszystkie cztery domyślnie mają 200 DPI i udostępniają zagnieżdżony PdfConfig.

KonfiguracjaFormatyDefaultRenderDodatkowe właściwości/zachowanie
HtmlConfigHTML, HTMtrueNatywne renderowanie; użyj false dla ścieżki PDF opartej na tekście.
EpubConfigEPUBtrueNatywne renderowanie; false używa PDF.
MhtConfigMHT, MHTMLtrue w klasie; false w automatycznym kataloguNormalne otwarcie bez konfiguracji używa przeszukiwalnego przekierowania do PDF. Domyślna instancja utworzona jawnie renderuje natywnie.
XpsConfigXPSfalseDomyślnie używa ścieżki PDF; ustaw true dla natywnego renderowania obrazu.

Przykłady konfiguracji według rodziny

csharp
BaseConfig[] configs =
{
    new PdfConfig
    {
        AllowSearch = true,
        ExtractHyperlinks = true,
        HyperlinksPageCount = 0
    },
    new WordConfig
    {
        PaperSize = DocPaperSize.A4,
        RemovePaperMargin = false,
        FontFolders = new[] { "/usr/share/fonts/truetype" },
        AllowSearch = true
    },
    new ExcelConfig
    {
        PaperLandscape = true,
        AutoFitContents = true,
        CalculateFormula = true,
        SplitWorksheets = false,
        PrintGridlines = false
    },
    new PptConfig
    {
        FastLoad = true,
        FontFolders = new[] { "/usr/share/fonts/truetype" },
        AllowSearch = true
    },
    new CadConfig
    {
        ShowColor = true,
        WhiteBackground = true,
        ShowModel = true,
        ShowLayouts = false,
        QualityText = CadConfig.RenderQuality.High
    },
    new EmailConfig
    {
        SkipExternalImages = true,
        RemoveLastWhitePage = true,
        TimeZoneOffset = TimeSpan.Zero
    },
    new ImageConfig
    {
        MaxImagePixelSize = 3000,
        TransparentPng = true
    },
    new DicomConfig
    {
        DisplayMode = DicomDisplayMode.AnimationAndFrames,
        AnimationFrameDelayMs = 100,
        LoopCount = 0
    }
};

Wybór według rozszerzenia

csharp
static BaseConfig? ConfigForExtension(string extUpper) => extUpper switch
{
    ".DOC" or ".DOCX" or ".DOT" or ".DOTX" or ".ODT" => new WordConfig
    {
        AutoFitAllTables = WordConfig.TableAutoFitBehavior.AutoFitToWindow,
        PaperSize = DocPaperSize.Tabloid,
        PdfConfig = new PdfConfig { ExtractHyperlinks = true, HyperlinksPageCount = 5, AllowCopy = true }
    },
    ".PDF" => new PdfConfig { AllowSearch = true, AllowCopy = true },
    ".XLS" or ".XLSX" or ".ODS" or ".CSV" => new ExcelConfig { AllowSearch = true, AllowCopy = true },
    ".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },
    // DefaultRender = false → przekierowanie PDF → precyzyjne wyszukiwanie tekstu natywnego w pikselach
    ".HTML" or ".HTM" => new HtmlConfig { DefaultRender = false },
    ".EML" or ".EMLX" or ".MSG" => new EmailConfig { DefaultRender = false },
    _ => null // fall back to the format's default config
};

Czy ta strona była pomocna?