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 для великих документів, замість типових вбудованих 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 експорт form-data.

Чи змінює перетворення у 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

Дивіться також

 Українська