Conversion
Conversion
Tato stránka popisuje vykreslování PDF do jiných formátů a konverzi dokumentu směrem k PDF/A compliance. Document poskytuje jednu To*() metodu pro každý výstupní formát pro celý dokument; stejné metody existují na Page pro vykreslení jedné stránky.
Vykreslování do jiných formátů dokumentů
Document.ToHtml(), Document.ToDocx() a Document.ToMarkdown() vykreslují každou stránku; Page.ToSvg() a Page.ToImage() vykreslují jednu stránku do samostatného řetězce SVG nebo bajtů PNG. Každý přijímá své vlastní možnosti — mode na DocxOptions (‘flow’ přetéká obsah, ’textbox’ zachovává vlastní geometrii každé stránky) a images na MarkdownExportOptions (‘inline’ vkládá data obrázku jako URI, ’external’ zapisuje samostatné soubory do 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 (pro Page.ToImage()) také přijímá format, quality, scale, explicitní width / height a background (‘white’ nebo ’transparent’).
Konverze směrem k PDF/A
Document.ConvertToPdfA() se snaží opravit dokument směrem k PDF/A level (‘b’ nebo ‘u’) a znovu jej validovat, vrací ConversionReport s applied (opravy, které provedl), unresolved (problémy, které nemohl opravit) a passed. Spusťte jej na kopii — například vytvořenou pomocí Document.ExtractPages() — aby živý, funkční dokument nebyl konverzí nikdy změněn.
// 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');Další exportní formáty
Kromě HTML, Markdown, DOCX, SVG a PNG knihovna také exportuje TIFF (TiffExportOptions, encodeTiff()) a importuje/exportuje hodnoty polí AcroForm ve formátech FDF a XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — užitečné pro výměnu vyplněných dat formuláře odděleně od samotného PDF.
Tipy a osvědčené postupy
- Spusťte
Document.ConvertToPdfA()na kopii (například zDocument.ExtractPages()), nikdy na živém dokumentu, který ještě potřebujete uložit bez konverze. - Zkontrolujte
ConversionReport.unresolvedi když jepassedtruepro volnější úroveň validace — některé opravy se plně vyřeší až při přísnější úrovni. - Použijte
mode: 'textbox'naDocxOptions, když výstup DOCX musí zachovat přesnou vizuální geometrii každé stránky; použijte výchozí režim'flow', když by měl text plynule přetékat jako běžný dokument pro zpracování textu. - Předejte
images: 'external'aimageDirnaMarkdownExportOptionspro velké dokumenty, místo výchozích vložených data URI, aby byl soubor Markdown samotný malý.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
ConvertToPdfA() stále hlásí passed: false | Ne každý problém v seznamech ConversionReport.unresolved lze automaticky opravit (např. chybějící vložená písma nebo chybějící /OutputIntent) | Řešte konkrétní pravidla unresolved ručně a poté spusťte znovu ConvertToPdfA() |
| Živý dokument byl neočekávaně upraven po pokusu o konverzi PDF/A | ConvertToPdfA() byl volán přímo na pracovním dokumentu místo kopie | Spusťte ji na kopii vytvořené pomocí Document.ExtractPages() |
| Export do Markdownu vytváří jeden obrovský soubor | Výchozí images: 'inline' vkládá každý obrázek jako data URI | Použijte { images: 'external', imageDir: '...' } k zápisu obrázků jako samostatných souborů |
| Výstup DOCX ztrácí původní rozvržení stránky | Výchozí mode: 'flow' přetéká obsah jako textový procesor | Použijte { mode: 'textbox' } k zachování geometrie každé stránky |
FAQ
Do jakých formátů lze PDF převést?
HTML, Markdown a DOCX pro celý dokument (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG a PNG po stránce (Page.ToSvg() / Page.ToImage()); plus TIFF a FDF/XFDF export form-data.
Mění převod na PDF/A můj původní dokument?
Pouze pokud na něj přímo zavoláte ConvertToPdfA(). Zavolejte to na kopii — například doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — aby byl původní dokument ponechán beze změny.
Jak zjistím, jestli konverze PDF/A skutečně uspěla?
Zkontrolujte ConversionReport.passed. applied uvádí, co konverze opravila, a unresolved uvádí, co se nepodařilo — prohlédněte unresolved i když je passed true.
Mohu exportovat jen vyplněné hodnoty formulářových polí, bez samotného PDF?
Ano — exportFdfFile() a exportXfdfFile() zapíší aktuální hodnoty pole AcroForm do samostatného souboru FDF nebo XFDF; importFdfFile() / importXfdfFile() je načtou zpět do dokumentu.
API Reference Shrnutí
| Třída/metoda | Popis: |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Renderovat každou stránku do jiného formátu dokumentu |
Page.ToSvg() / Page.ToImage() | Renderovat jednu stránku do SVG nebo PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Možnosti vykreslování podle formátu |
Document.ConvertToPdfA() | Opravit dokument na úroveň PDF/A a znovu ověřit |
ConversionReport | Výsledek konverze: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Exportovat do TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Exportovat nebo importovat hodnoty pole AcroForm jako FDF/XFDF |