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

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

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

Все четыре используют DPI 200 по умолчанию и имеют вложенный PdfConfig.

КонфигФорматыDefaultRenderДополнительные свойства/поведение
HtmlConfigHTML, HTMtrueНативный рендер; используйте false для текстового пути PDF‑поиска.
EpubConfigEPUBtrueНативный рендер; false использует PDF.
MhtConfigMHT, MHTMLtrue on the class; false in the automatic catalogОбычное открытие без конфигурации использует перенаправление в searchable 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
};

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