Конфигурации форматов

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

Каждый документ открывается с реализацией 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.
PdfConfigPdfConfigновый экземплярНастройки, используемые в пути 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.
PdfConfigPdfConfigновый экземплярНастройки для пути 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>SheetNamesпустоОграничить рендеринг именованными листами.
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Избегать рендеринга первого слайда при открытии; использовать метаданные и рендерить по запросу.
PdfConfigPdfConfigновый экземплярНастройки поведения 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.
PdfConfigPdfConfigновый экземплярНастройки пути 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 эффективныйЯвный горизонтальный DPI; иначе берётся ImageResolution, затем 100.
intVerticalResolution100 эффективныйЯвный вертикальный 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.
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 = ["/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
    }
];

Выбор конфигурации по расширению файла

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

Была ли эта страница полезной?