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/A | ConvertToPdfA() було викликано безпосередньо на робочому документі замість копії | Викличте його на копії, створеній за допомогою 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 |