Конфігурації Форматів

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

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

Цей окремий простір імен новий. Попередня бібліотека .NET Standard розподіляла ці типи між Doconut.Configs, Doconut.Configs.View та Doconut.Models. Назви типів не змінилися — у більшості файлів зміна полягає лише у видаленні двох рядків using. Дивіться посібник з міграції.

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.
PdfConfigPdfConfigновий екземплярНалаштування шляху 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 використовує білий фон.
TiffConfigнемає додаткових властивостей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Рендеринг Gantt у рідному вигляді; false використовує текстовий шлях PDF.
PdfConfigPdfConfigновий екземплярНалаштування шляху 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.
PdfConfigPdfConfigновий екземплярНалаштування шляху PDF.
boolExportPdfAtrueВихідний архівний PDF/A.

HtmlConfig, EpubConfig, MhtConfig та XpsConfig

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

КонфігФорматиDefaultRenderДодаткові властивості/поведінка
HtmlConfigHTML, HTMtrueРендеринг у рідному вигляді; використайте false для текстового шляху пошуку PDF.
EpubConfigEPUBtrueРендеринг у рідному вигляді; false використовує PDF.
MhtConfigMHT, MHTMLtrue у класі; false у автоматичному каталозіЗвичайне відкриття без конфігурації використовує перенаправлення в пошуковий PDF. Явно створений екземпляр за замовчуванням рендерить у рідному вигляді.
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
};

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