Conversion
Conversion
Ta strona opisuje renderowanie pliku PDF do innych formatów oraz konwertowanie dokumentu w kierunku zgodności z PDF/A. Document udostępnia jedną metodę To*() na każdy format wyjściowy dla całego dokumentu; te same metody istnieją w Page, aby renderować pojedynczą stronę.
Renderowanie do innych formatów dokumentów
Document.ToHtml(), Document.ToDocx() i Document.ToMarkdown() renderują każdą stronę; Page.ToSvg() i Page.ToImage() renderują jedną stronę do samodzielnego łańcucha SVG lub bajtów PNG. Każda przyjmuje własne opcje — mode na DocxOptions (‘flow’ przetwarza zawartość, ’textbox’ zachowuje własną geometrię każdej strony) oraz images na MarkdownExportOptions (‘inline’ osadza obrazy jako data URI, ’external’ zapisuje oddzielne pliki w 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 (dla Page.ToImage()) akceptuje także format, quality, scale, wyraźny width / height oraz background (‘white’ lub ’transparent’).
Konwertowanie w kierunku PDF/A
Document.ConvertToPdfA() próbuje naprawić dokument w kierunku PDF/A level (‘b’ lub ‘u’) i ponownie go zwalidować, zwracając ConversionReport z applied (działania naprawcze, które podjęto), unresolved (problemy, których nie udało się naprawić) oraz passed. Uruchom go na kopii — na przykład takiej stworzonej za pomocą Document.ExtractPages() — aby żywy, działający dokument nigdy nie został zmodyfikowany przez konwersję.
// 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');Inne formaty eksportu
Poza HTML, Markdown, DOCX, SVG i PNG, biblioteka również eksportuje TIFF (TiffExportOptions, encodeTiff()) oraz importuje/eksportuje wartości pól AcroForm w formatach FDF i XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — przydatne do wymiany wypełnionych danych formularza oddzielnie od samego pliku PDF.
Wskazówki i najlepsze praktyki
- Uruchom
Document.ConvertToPdfA()na kopii (na przykład zDocument.ExtractPages()), nigdy nie na bieżącym dokumencie, który musisz jeszcze zapisać nieprzekonwertowany. - Sprawdź
ConversionReport.unresolved, nawet gdypassedjesttruedla luźniejszego poziomu walidacji — niektóre działania naprawcze rozwiążą się w pełni dopiero przy bardziej rygorystycznym poziomie. - Użyj
mode: 'textbox'naDocxOptions, gdy wyjście DOCX musi zachować dokładną wizualną geometrię każdej strony; użyj domyślnego trybu'flow', gdy tekst ma się swobodnie układać jak w normalnym dokumencie edytora tekstu. - Przekaż
images: 'external'iimageDirnaMarkdownExportOptionsdla dużych dokumentów, zamiast domyślnych wbudowanych URI danych, aby utrzymać plik Markdown mały.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
ConvertToPdfA() nadal zgłasza passed: false | Nie każdy problem, który wymienia ConversionReport.unresolved, może być automatycznie naprawiony (np. brak wbudowanych czcionek lub brakujący /OutputIntent) | Ręcznie zastosuj konkretne zasady unresolved, a następnie uruchom ponownie ConvertToPdfA() |
| Dokument na żywo został nieoczekiwanie zmodyfikowany po próbie konwersji PDF/A | ConvertToPdfA() został wywołany bezpośrednio na dokumencie roboczym zamiast na kopii | Wywołaj go na kopii wykonanej przy użyciu Document.ExtractPages() |
| Eksport Markdown tworzy jeden ogromny plik | Domyślny images: 'inline' osadza każdy obraz jako data URI | Przekaż { images: 'external', imageDir: '...' }, aby zapisać obrazy jako oddzielne pliki |
| Wyjście DOCX traci oryginalny układ strony | Domyślny mode: 'flow' przekształca zawartość jak edytor tekstu | Przekaż { mode: 'textbox' }, aby zachować indywidualną geometrię każdej strony |
FAQ
Na jakie formaty można konwertować plik PDF?
HTML, Markdown i DOCX dla całego dokumentu (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG i PNG na stronę (Page.ToSvg() / Page.ToImage()); plus TIFF i FDF/XFDF eksport danych formularza.
Czy konwersja do PDF/A modyfikuje mój oryginalny dokument?
Tylko jeśli wywołasz ConvertToPdfA() bezpośrednio na nim. Wywołaj go na kopii — na przykład doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — aby pozostawić oryginalny dokument nieprzekonwertowany.
Jak mogę sprawdzić, czy konwersja PDF/A rzeczywiście się powiodła?
Sprawdź ConversionReport.passed. applied wymienia, co konwersja naprawiła, a unresolved wymienia, czego nie mogła — sprawdź unresolved, nawet gdy passed jest true.
Czy mogę wyeksportować tylko wypełnione wartości pól formularza, bez samego pliku PDF?
Tak — exportFdfFile() i exportXfdfFile() zapisują bieżące wartości pól AcroForm do oddzielnego pliku FDF lub XFDF; importFdfFile() / importXfdfFile() odczytują je z powrotem do dokumentu.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Renderuj każdą stronę do innego formatu dokumentu |
Page.ToSvg() / Page.ToImage() | Renderuj pojedynczą stronę do SVG lub PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Opcje renderowania per format |
Document.ConvertToPdfA() | Napraw dokument do poziomu PDF/A i ponownie zweryfikuj |
ConversionReport | Wynik konwersji: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Eksportuj do TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Eksportuj lub importuj wartości pola AcroForm jako FDF/XFDF |