Konfiguracje Formatu

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.

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.

Jeśli nie podano 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ślnego formatu. Poprawny zakres to 25‑300 DPI; nieprawidłowe przypisania są ignorowane.
stringDocumentCulture""Ustawienia regionalne dla dat i liczb. Niepuste wartości są przycinane; puste przypisania są ignorowane.
stringPassword""Hasło chronionego dokumentu. 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 wyrenderowane obrazy stron dla sesji dokumentu.

PdfConfig

Formaty: PDF. Domyślne 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 do obsługi żądań.
boolAllowCopyfalseZezwala na zaznaczanie i kopiowanie 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 rozdzielczość DPI dla zmienionych 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ślne 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ła.
stringFontInfo""Informacje o podstawianiu czcionek.
string[]?FontFoldersnullDodatkowe katalogi czcionek, szczególnie przydatne w Linux/kontenerach.
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 PDF.
PdfConfigPdfConfignowa instancjaUstawienia dla ś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, wykluczając pustą zawartość.
boolCalculateFormulatruePrzelicza formuły przed renderowaniem.
boolShowRowColumnHeaderstrueUwzględnia nagłówki wierszy i kolumn.
boolExportPdfAfalseUżywa PDF/A w ścieżce PDF.
boolSplitWorksheetsfalseTrzyma arkusze jako oddzielne grupy stron.
boolShowEmptyWorkSheetsfalseUwzględnia puste arkusze.
boolExportLandscapefalseWymusza eksport w orientacji poziomej.
boolExportOnePagePerSheetfalseDopasowuje każdy arkusz do jednej strony wyjściowej.
boolMemoryOptimizationPreferencetrueRedukuje 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>SheetNamesemptyOgranicza renderowanie do nazwanych arkuszy.
CustomStyleCell?CustomStylesnullOpcjonalne nadpisania formatowania daty/liczb dziesiętnych/całkowitych.
boolAllowSearchfalseDeleguje do PdfConfig.AllowSearch.
boolAllowCopyfalseDeleguje do PdfConfig.AllowCopy.

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

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 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.
boolAllowSearchfalseDeleguje do PdfConfig.AllowSearch.
boolAllowCopyfalseDeleguje do PdfConfig.AllowCopy.

W 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 PDF.
PdfConfigPdfConfignowa instancjaUstawienia ścieżki PDF.
boolExportPdfAfalseWyjście archiwalne PDF/A.
boolShowColortrueKolor zamiast monochromu.
boolWhiteBackgroundtrueBiałe zamiast czarnego tła.
shortLineWidth25Szerokość kreski 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ść rastra: 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 PDF.
PdfConfigPdfConfignowa instancjaUstawienia ścieżki PDF.
Encoding?EmailEncodingnullZastępuje kodowanie wiadomości.
Encoding?SubjectEncodingnullZastępuje kodowanie tematu.
Encoding?BodyEncodingnullZastępuje kodowanie treści.
boolSkipExternalImagesfalseNie ładuje zdalnie odwoływanych obrazów. Zalecane dla niezweryfikowanych e‑mail.
boolRemoveLastWhitePagefalseUsuwa końcową pustą stronę.
boolUseAntiAliasingfalseWłącza antyaliasing.
boolUseHighQualityRenderingfalsePreferuje czystsze, wolniejsze renderowanie.
TimeSpan?TimeZoneOffsetnullZastępuje strefę czasową używaną dla dat.
boolForcePageSizefalseWymusza stałe wymiary strony.

ImageConfig, TiffConfig, and PsdConfig

ImageConfig obejmuje JPG, JPEG, JPE, PNG, BMP, GIF, ICO, EPS, TGA, WEBP, CDR, CMX, DNG, EMF, WMF, AVIF i SVG. Domyślne DPI to 100.

ConfigWłaściwośćDomyślneZachowanie
ImageConfigMaxImagePixelSize3000Maksymalna szerokość/wysokość. 0 oznacza nieograniczone; niezerowe wartości poniżej 50 są ignorowane.
ImageConfigTransparentPngtrueZachowuje przezroczystość PNG; false używa białego tła.
TiffConfigbrak dodatkowych właściwościDPI 200Używa tylko BaseConfig; obsługuje wielostronicowy TIFF.
PsdConfigMaxImagePixelSize3000Ta 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 effectiveJawne DPI w poziomie; w przeciwnym razie ImageResolution, potem 100.
intVerticalResolution100 effectiveJawne DPI w pionie; w przeciwnym razie ImageResolution, potem 100.
intAnimationFrameDelayMs100Opóźnienie klatek animacji wieloklatkowej; w GIF timing używa jednostek 10 ms.
ushortLoopCount00 oznacza nieskończoną pętlę; dodatnie wartości 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 zachowania układu strony.

ProjectConfig

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

TypWłaściwośćDomyślneZachowanie
boolDefaultRendertrueNatywny obraz Gantt; false używa tekstowej ścieżki PDF.
PdfConfigPdfConfignowa instancjaUstawienia ś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 PDF.
PdfConfigPdfConfignowa instancjaUstawienia ścieżki PDF.
boolExportPdfAtrueWyjście archiwalne PDF/A.

HtmlConfig, EpubConfig, MhtConfig, and XpsConfig

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

ConfigFormatyDefaultRenderDodatkowe właściwości/zachowanie
HtmlConfigHTML, HTMtrueNatywne renderowanie; użyj false dla tekstowej ścieżki PDF wyszukiwania.
EpubConfigEPUBtrueNatywne renderowanie; false używa PDF.
MhtConfigMHT, MHTMLtrue w klasie; false w automatycznym kataloguNormalne otwarcie bez konfiguracji używa przekierowania PDF z możliwością wyszukiwania. Wyraźnie skonstruowana domyślna instancja renderuje natywnie.
XpsConfigXPSfalseDomyślnie używa ścieżki PDF; ustaw true dla natywnego renderowania obrazu.

Configuration examples by family

csharp
BaseConfig[] configs =
[
    new PdfConfig
    {
        AllowSearch = true,
        ExtractHyperlinks = true,
        HyperlinksPageCount = 0
    },
    new WordConfig
    {
        PaperSize = DocPaperSize.A4,
        RemovePaperMargin = false,
        FontFolders = ["/usr/share/fonts/truetype"],
        AllowSearch = true
    },
    new ExcelConfig
    {
        PaperLandscape = true,
        AutoFitContents = true,
        CalculateFormula = true,
        SplitWorksheets = false,
        PrintGridlines = false
    },
    new PptConfig
    {
        FastLoad = true,
        FontFolders = ["/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
    }
];

Per-extension selection

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 → PDF redirect → pixel-accurate native text search
    ".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?