Налаштування форматів

Повний набір параметрів рендерингу для кожного формату

Кожен документ відкривається з реалізацією BaseConfig. Передайте її у OpenDocumentAsync або дозвольте каталогу форматів створити типову. Усі класи нижче знаходяться у просторі імен Doconut.

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

Наслідування та вкладені налаштування PDF

Кожен формат успадковує п'ять властивостей BaseConfig. Формати, які можуть перенаправлятися через PDF, надають вкладений PdfConfig. У WordConfig, ExcelConfig та PptConfig властивості AllowSearch і AllowCopy є зручними властивостями, що читають і записують у вкладений PdfConfig.

DefaultRender = true вибирає рендерер рідного формату. Для форматів з перенаправленням у PDF, false спочатку конвертує у PDF у пам'яті, а потім використовує переглядач PDF. Такий шлях часто корисний для пошуку за текстовими координатами, але вимагає додаткової конверсії.

Якщо не зазначено інше, у таблицях показані типові значення конструкторів/властивостей. Автоматичний каталог форматів навмисно перевизначає два з них: створює ExcelConfig з SplitWorksheets = true та MhtConfig з DefaultRender = false.

BaseConfig

ТипВластивістьТипове значенняПоведінка
intImageResolution00 використовує типове значення формату. Дійсний явний діапазон — 25‑300 DPI; недійсні присвоєння ігноруються.
stringDocumentCulture""Локаль для дат і чисел. Непорожні значення обрізаються; порожні присвоєння ігноруються.
stringPassword""Пароль захищеного документа. DocOptions.Password копіюється сюди автоматично.
boolShowUItrueВластивість сумісності; поточний рендерер не використовує її для керування панеллю інструментів браузера.
boolCachePagestrueКешувати зображення відрендерених сторінок протягом сеансу документа.

PdfConfig

Формати: PDF. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueПеремикач сумісності. Поточна фабрика використовує рідний переглядач PDF.
boolAllowSearchfalseСтворює/використовує індекс пошуку тексту в PDF. Потрібна ліцензійна можливість Search для запитів.
boolAllowCopyfalseДозволяє операції виділення/копіювання тексту.
boolExtractHyperlinksfalseВитягує прямокутники посилань для накладок на клієнті.
intHyperlinksPageCount0Максимальна кількість сторінок, сканованих на посилання; 0 означає всі сторінки.
boolCompressImagesfalseСтискає вбудовані зображення перед рендерингом.
intCompressQuality100Якість JPEG, що використовується при увімкненому стисненні.
boolResizeImagesfalseЗмінює розмір вбудованих зображень перед рендерингом.
intResizeResolution300Цільове DPI для змінених зображень.
boolCompressFastfalseНадає перевагу швидшому, менш якісному шляху стиснення.
boolFixInvalidImagesfalseСпроба виправити недійсні вбудовані зображення.
boolSplitSegmentsfalseОб'єднує слова, розділені між сегментами рядка, для покращення пошуку/копіювання.

showHyperlinks у ViewerConfig керує накладкою на клієнті, тоді як ExtractHyperlinks керує витягом на сервері. Увімкніть обидва.

WordConfig

Формати: DOC, DOCX, DOCM, DOT, DOTX, DOTM, RTF, ODT, OTT, XML. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідного Word; false використовує перенаправлення у PDF.
PdfConfigPdfConfignew instanceНалаштування, що використовуються шляхом PDF/пошуку.
DocPaperSizePaperSizeA4Розмір вихідного листа. Використовуйте Custom з шириною/висотою.
intPaperWidth595Користувацька ширина у пунктах.
intPaperHeight841Користувацька висота у пунктах.
boolRemovePaperMarginfalseВидалити поля сторінки документа.
boolRenderPageColortrueЗберігати налаштований колір сторінки Word; false рендерить білі сторінки.
boolExportPdfAfalseВикористовувати архівний PDF/A у шляху PDF.
Encoding?FileEncodingnullПеревизначити кодування джерела.
stringFontInfo""Інформація про заміну шрифтів.
string[]?FontFoldersnullДодаткові каталоги шрифтів, особливо корисно в Linux/контейнерах.
boolAllowSearchfalseДелегується до PdfConfig.AllowSearch.
boolAllowCopyfalseДелегується до PdfConfig.AllowCopy.
TableAutoFitBehaviorAutoFitAllTablesNoneNone, AutoFitToContents або AutoFitToWindow.

ExcelConfig

Формати: XLS, XLSX, XLSM, XLSB, XLTX, XLTM, ODS, CSV. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідного листа; false використовує перенаправлення у PDF.
PdfConfigPdfConfignew instanceНалаштування для шляху PDF/пошуку.
ExcelPaperSizePaperSizePaperA4Розмір вихідного листа.
doublePaperMargins0.25Поля сторінки в дюймах.
boolPaperLandscapetrueРендеринг листа у альбомній орієнтації.
boolAutoFitContentsfalseАвтоматичне підгонка висоти рядків і ширини колонок.
boolRemoveEmptyContenttrueСтискає вихід, виключаючи порожній вміст.
boolCalculateFormulatrueПерераховує формули перед рендерингом.
boolShowRowColumnHeaderstrueВключає заголовки рядків/стовпців.
boolExportPdfAfalseВикористовує PDF/A у шляху PDF.
boolSplitWorksheetsfalseЗберігає листи як окремі групи сторінок.
boolShowEmptyWorkSheetsfalseВключає порожні листи.
boolExportLandscapefalseПримусово експортує в альбомній орієнтації.
boolExportOnePagePerSheetfalseПідганяє кожен лист до однієї вихідної сторінки.
boolMemoryOptimizationPreferencetrueЗменшує пікове споживання пам'яті, можливо за рахунок швидкості.
boolAutoTrimWorksheetRenderRangetrueРендерить лише видимий використаний діапазон, коли немає явної області друку.
boolAutoTrimPreserveExistingPrintAreatrueЗберігає визначені у книзі області друку під час автопідрізання.
string?PrintAreanullЯвний діапазон, наприклад "A1:Z100".
boolPrintGridlinesfalseДрукує лінії сітки листа.
boolPrintHeadingsfalseДрукує заголовки рядків/стовпців.
List<string>SheetNamesemptyОбмежує рендеринг іменованими листами.
CustomStyleCell?CustomStylesnullНеобов'язкові перевизначення форматування дати/десяткового/цілого числа.
boolAllowSearchfalseДелегується до PdfConfig.AllowSearch.
boolAllowCopyfalseДелегується до PdfConfig.AllowCopy.

CustomStyleCell надає CustomStyleDateTime, CustomStyleNumberDecimal та CustomStyleNumberInteger, усі – nullable рядки.

new ExcelConfig() встановлює SplitWorksheets у false; відкриття Excel‑файлу без явної конфігурації використовує каталог форматів, який встановлює його у true.

PptConfig

Формати: PPT, PPTX, PPTM, PPSX, PPSM, POT, POTX, POTM, ODP. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідних слайдів; false використовує перенаправлення у PDF.
boolFastLoadfalseУникає рендерингу першого слайду під час відкриття; використовує метадані та рендерить за запитом.
PdfConfigPdfConfignew instanceНалаштування поведінки PDF/пошуку.
stringFontInfo""Інформація про заміну шрифтів.
string[]?FontFoldersnullДодаткові каталоги шрифтів.
boolAllowSearchfalseДелегується до PdfConfig.AllowSearch.
boolAllowCopyfalseДелегується до PdfConfig.AllowCopy.

У Linux та macOS рендеринг презентацій поточним рушієм вимагає libgdiplus та System.Drawing.EnableUnixSupport=true. Встановіть шрифти, що використовуються у презентації, або вкажіть FontFolders.

CadConfig

Формати: DWG, DXF, DGN. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідного CAD; false використовує перенаправлення у PDF.
PdfConfigPdfConfignew instanceНалаштування шляху PDF.
boolExportPdfAfalseВивід архівного PDF/A.
boolShowColortrueКолір, а не монохром.
boolWhiteBackgroundtrueБілий фон замість чорного.
shortLineWidth25Ширина штриху CAD.
boolShowLayoutsfalseВідображати вкладки макетів.
boolShowModeltrueВідображати простір моделі.
boolCheck3DSolidtrueОбробляти 3D‑ті тверді тіла.
boolExportAllLayoutsfalseЕкспортувати всі макети, перевизначаючи вибір моделі/макету.
boolLimitMinimumSizefalseЗастосовувати MinimumSize.
intMinimumSize700Мінімальний розмір виводу у пікселях.
boolLimitMaximumSizefalseЗастосовувати MaximumSize.
intMaximumSize700Максимальний розмір виводу у пікселях.
boolShowAllLayoutsDgnfalseВключати всі DGN‑макети.
boolAutomaticLayoutScalingtrueАвтоматично масштабувати макети.
floatPdfMargins0.5Поле PDF у дюймах.
RenderQualityQualityImageLowЯкість растру: Low, Medium або High.
RenderQualityQualityTextMediumЯкість тексту: Low, Medium або High.

EmailConfig

Формати: EML, EMLX, MSG. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідної електронної пошти; false використовує перенаправлення у PDF.
PdfConfigPdfConfignew instanceНалаштування шляху PDF.
Encoding?EmailEncodingnullПеревизначити кодування повідомлення.
Encoding?SubjectEncodingnullПеревизначити кодування теми.
Encoding?BodyEncodingnullПеревизначити кодування тіла.
boolSkipExternalImagesfalseНе завантажувати зовнішні зображення. Рекомендовано для недовіреної пошти.
boolRemoveLastWhitePagefalseВидаляти останню порожню сторінку.
boolUseAntiAliasingfalseУвімкнути згладжування.
boolUseHighQualityRenderingfalseНадає перевагу чистішому, повільнішому рендерингу.
TimeSpan?TimeZoneOffsetnullПеревизначити часовий пояс, що використовується для дат.
boolForcePageSizefalseПримусово встановити фіксовані розміри сторінки.

ImageConfig, TiffConfig та PsdConfig

ImageConfig охоплює JPG, JPEG, JPE, PNG, BMP, GIF, ICO, EPS, TGA, WEBP, CDR, CMX, DNG, EMF, WMF, AVIF та SVG. Його типове DPI — 100.

КонфігВластивістьТипове значенняПоведінка
ImageConfigMaxImagePixelSize3000Максимальна ширина/висота. 0 означає без обмежень; ненульові значення менше 50 ігноруються.
ImageConfigTransparentPngtrueЗберігати прозорість PNG; false використовує білий фон.
TiffConfigno additional propertiesDPI 200Не має додаткових властивостей. DPI 200. Використовує лише BaseConfig; підтримує багатосторінковий TIFF.
PsdConfigMaxImagePixelSize3000Те ж саме 0/мінімум-50 перевірка, що й у ImageConfig; типове DPI — 100.

DicomConfig

Формати: DCM, IMA. Типове ефективне DPI: 100. Потрібен плагін DICOM.

ТипВластивістьТипове значенняПоведінка
intHorizontalResolution100 effectiveЯвне горизонтальне DPI; якщо не вказано, використовується ImageResolution, потім 100.
intVerticalResolution100 effectiveЯвне вертикальне DPI; якщо не вказано, використовується ImageResolution, потім 100.
intAnimationFrameDelayMs100Затримка кадру багатокадрової анімації; таймінг GIF використовує одиниці по 10 мс.
ushortLoopCount00 — безкінечний цикл; позитивні значення зупиняються після зазначеної кількості.
DicomDisplayModeDisplayModeAnimationAndFramesAnimationOnly, FramesOnly або комбінований огляд плюс статичні кадри.

TxtConfig

Формат: TXT. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
DocPaperSizePaperSizeA4Розмір вихідного листа.
Encoding?FileEncodingnullnull використовує UTF-8.
stringFontInformation""Інформація про шрифт для рендерингу тексту.

Використовуйте WordConfig, коли простий текст потребує більш розширеного макетування сторінки.

ProjectConfig

Формати: MPP, MPPX, MPX. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідного зображення Ганта; false використовує текстовий шлях PDF.
PdfConfigPdfConfignew instanceНалаштування шляху PDF.
boolExportPdfAtrueВивід архівного PDF/A.
MppPaperSizePaperSizeLedgerРозмір вихідного листа проекту.
MppTimeScaleTimeScaleMonthsDays або Months.
MppFormatPresentationFormatGanttChartGanttChart, TaskUsage, ResourceUsage, ResourceSheet або TaskSheet.

Для точного пошуку за текстовими координатами використовуйте DefaultRender = false.

VisioConfig

Формати: VSD, VSDX, VSS, VSSX, VST, VSTX, VDX, VSX, VSDM. Типове DPI: 200.

ТипВластивістьТипове значенняПоведінка
boolDefaultRendertrueРендеринг рідної діаграми; false використовує перенаправлення у PDF.
PdfConfigPdfConfignew instanceНалаштування шляху PDF.
boolExportPdfAtrueВивід архівного PDF/A.

HtmlConfig, EpubConfig, MhtConfig та XpsConfig

Усі чотири за замовчуванням мають 200 DPI і надають вкладений PdfConfig.

КонфігФорматиDefaultRenderДодаткові властивості/поведінка
HtmlConfigHTML, HTMtrueРендеринг рідний; використайте false для текстового шляху PDF пошуку.
EpubConfigEPUBtrueРендеринг рідний; false використовує PDF.
MhtConfigMHT, MHTMLtrue on the class; false in the automatic catalogtrue у класі; false у автоматичному каталозі
XpsConfigXPSfalseЗа замовчуванням використовує шлях PDF; встановіть true для рендерингу нативного зображення.

Приклади конфігурацій за сімейством

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
    }
};

Вибір за розширенням

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
};

Чи була ця сторінка корисною?