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

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

Каждый документ открывается с реализацией 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>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Избегать рендеринга первого слайда при открытии; использовать метаданные и рендерить по запросу.
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 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.
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
};

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