Conversion

Conversion

Эта страница охватывает рендеринг PDF в другие форматы и преобразование документа в соответствие с PDF/A. Document предоставляет один метод To*() на каждый формат вывода для всего документа; такие же методы существуют в Page для рендеринга отдельной страницы.


Рендеринг в другие форматы документов

Document.ToHtml(), Document.ToDocx() и Document.ToMarkdown() рендерят каждую страницу; Page.ToSvg() и Page.ToImage() рендерят одну страницу в отдельную строку SVG или байты PNG. Каждый принимает свои собственные параметры — mode на DocxOptions (‘flow’ переупорядочивает контент, ’textbox’ сохраняет геометрию каждой страницы) и images на MarkdownExportOptions (‘inline’ встраивает данные изображений в виде URI, ’external’ записывает отдельные файлы в imageDir).

const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg();               // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml();                      // standalone semantic HTML, all pages
const md = doc.ToMarkdown();                    // GFM Markdown, all pages
const docx = doc.ToDocx();                      // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' });  // .docx keeping each page's own geometry

ImageOptions (для Page.ToImage()) также принимает format, quality, scale, явный width / height и background (‘white’ или ’transparent’).


Преобразование к PDF/A

Document.ConvertToPdfA() пытается исправить документ в направлении PDF/A level (‘b’ или ‘u’) и повторно валидирует его, возвращая ConversionReport с applied (действия по исправлению, которые были выполнены), unresolved (проблемы, которые не удалось исправить) и passed. Запускайте его на копии — например, созданной с помощью Document.ExtractPages() — чтобы живой, рабочий документ никогда не был изменён в процессе конвертации.

// ExtractPages gives an independent copy; ConvertToPdfA never touches the original.
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');

console.log(`applied ${conversion.applied.length} action(s), `
  + `${conversion.unresolved.length} unresolved, `
  + `result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);
copy.WriteTo('output-pdfa.pdf');

Другие форматы экспорта

Помимо HTML, Markdown, DOCX, SVG и PNG, библиотека также экспортирует TIFF (TiffExportOptions, encodeTiff()) и импортирует/экспортирует значения полей AcroForm в форматах FDF и XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — это полезно для обмена заполненными данными форм отдельно от самого PDF.


Советы и лучшие практики

  • Запускайте Document.ConvertToPdfA() на копии (например из Document.ExtractPages()), никогда не на живом документе, который вам всё ещё нужно сохранить в неконвертированном виде.
  • Проверяйте ConversionReport.unresolved, даже когда passed находится в состоянии true для более мягкого уровня проверки — некоторые действия по исправлению полностью решаются только на более строгом уровне.
  • Используйте mode: 'textbox' на DocxOptions, когда вывод DOCX должен сохранять точную визуальную геометрию каждой страницы; используйте режим 'flow' по умолчанию, когда документ должен перестраиваться как обычный текстовый документ.
  • Передайте images: 'external' и imageDir на MarkdownExportOptions для больших документов, вместо стандартных встроенных data URI, чтобы файл Markdown оставался небольшим.

Распространённые проблемы

ПроблемаПричинаИсправление
ConvertToPdfA() всё ещё сообщает passed: falseНе все проблемы, перечисленные в ConversionReport.unresolved, могут быть автоматически исправлены (например, отсутствие встроенных шрифтов или отсутствие /OutputIntent)Вручную обработайте конкретные правила unresolved, затем повторно запустите ConvertToPdfA()
Живой документ был неожиданно изменён после попытки конвертации PDF/AConvertToPdfA() был вызван напрямую на рабочем документе вместо копииВызовите её на копии, созданной с помощью Document.ExtractPages()
Экспорт в Markdown создаёт один огромный файлСтандартный images: 'inline' встраивает каждое изображение как data URIПередайте { images: 'external', imageDir: '...' }, чтобы записать изображения в отдельные файлы
DOCX-вывод теряет оригинальное расположение страницСтандартный mode: 'flow' переразмещает содержимое, как текстовый процессорПередайте { mode: 'textbox' }, чтобы сохранить отдельную геометрию каждой страницы

FAQ

В какие форматы можно конвертировать PDF?

HTML, Markdown и DOCX для всего документа (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG и PNG по странице (Page.ToSvg() / Page.ToImage()); а также экспорт формы в TIFF и FDF/XFDF.

Приводит ли конвертация в PDF/A к изменению моего оригинального документа?

Только если вы вызываете ConvertToPdfA() непосредственно на нём. Вызовите его на копии — например doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — чтобы оригинальный документ остался неконвертированным.

Как узнать, действительно ли конверсия PDF/A прошла успешно?

Проверьте ConversionReport.passed. applied перечисляет, что конверсия исправила, а unresolved — что не удалось исправить — проверяйте unresolved, даже когда passed является true.

Можно ли экспортировать только заполненные значения полей формы, без самого PDF?

Да — exportFdfFile() и exportXfdfFile() записывают текущие значения поля AcroForm в отдельный файл FDF или XFDF; importFdfFile() / importXfdfFile() считывают их обратно в документ.


API Reference Сводка

Класс/МетодОписание:
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown()Преобразовать каждую страницу в другой формат документа
Page.ToSvg() / Page.ToImage()Преобразовать одну страницу в SVG или PNG
DocxOptions / MarkdownExportOptions / ImageOptionsОпции рендеринга по формату
Document.ConvertToPdfA()Восстановить документ до уровня PDF/A и повторно проверить
ConversionReportРезультат конвертации: applied, unresolved, passed
TiffExportOptions / encodeTiff()Экспорт в TIFF
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile()Экспортировать или импортировать значения поля AcroForm как FDF/XFDF

См. также:

 Русский