Conversion
Conversion
Halaman ini mencakup rendering PDF ke format lain dan mengonversi dokumen menuju kepatuhan PDF/A. Document menyediakan satu metode To*() per format output untuk seluruh dokumen; metode yang sama ada pada Page untuk merender satu halaman.
Rendering ke Format Dokumen Lain
Document.ToHtml(), Document.ToDocx(), dan Document.ToMarkdown() merender setiap halaman; Page.ToSvg() dan Page.ToImage() merender satu halaman menjadi string SVG mandiri atau byte PNG. Masing-masing menerima opsi mereka sendiri — mode pada DocxOptions (‘flow’ mengalirkan kembali konten, ’textbox’ mempertahankan geometri masing-masing halaman) dan images pada MarkdownExportOptions (‘inline’ menyematkan data URI gambar, ’external’ menulis file terpisah ke dalam 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 (untuk Page.ToImage()) juga menerima format, quality, scale, sebuah width / height eksplisit, dan background (‘white’ atau ’transparent’).
Mengonversi Menuju PDF/A
Document.ConvertToPdfA() berusaha memperbaiki sebuah dokumen menuju PDF/A level (‘b’ atau ‘u’) dan memvalidasinya kembali, mengembalikan ConversionReport dengan applied (tindakan perbaikan yang diambil), unresolved (isu yang tidak dapat diperbaiki), dan passed. Jalankan pada salinan — misalnya satu yang dibuat dengan Document.ExtractPages() — sehingga dokumen yang aktif dan berfungsi tidak pernah diubah oleh konversi.
// 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');Format Ekspor Lainnya
Selain HTML, Markdown, DOCX, SVG, dan PNG, perpustakaan ini juga mengekspor TIFF (TiffExportOptions, encodeTiff()) dan mengimpor/mengekspor nilai bidang AcroForm dalam FDF dan XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — berguna untuk menukar data formulir yang sudah terisi secara terpisah dari PDF itu sendiri.
Tips dan Praktik Terbaik
- Jalankan
Document.ConvertToPdfA()pada salinan (misalnya dariDocument.ExtractPages()), jangan pernah pada dokumen asli yang masih perlu Anda simpan tanpa konversi. - Periksa
ConversionReport.unresolvedbahkan ketikapassedberstatustrueuntuk tingkat validasi yang lebih longgar — beberapa tindakan perbaikan hanya sepenuhnya teratasi pada tingkat yang lebih ketat. - Gunakan
mode: 'textbox'padaDocxOptionsketika output DOCX perlu mempertahankan geometri visual tiap halaman secara tepat; gunakan mode'flow'default ketika harus mengalir kembali seperti dokumen pengolah kata normal. - Berikan
images: 'external'danimageDirpadaMarkdownExportOptionsuntuk dokumen besar, alih-alih data URI inline default, agar berkas Markdown itu sendiri tetap kecil.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
ConvertToPdfA() masih melaporkan passed: false | Tidak setiap masalah yang terdaftar ConversionReport.unresolved dapat diperbaiki secara otomatis (misalnya font tertanam yang hilang atau /OutputIntent yang hilang) | Tangani aturan unresolved spesifik secara manual, lalu jalankan kembali ConvertToPdfA() |
| Dokumen langsung berubah secara tak terduga setelah upaya konversi PDF/A | ConvertToPdfA() dipanggil langsung pada dokumen kerja alih-alih salinan | Panggil pada salinan yang dibuat dengan Document.ExtractPages() |
| Ekspor Markdown menghasilkan satu file besar | images: 'inline' default menyematkan setiap gambar sebagai data URI | Berikan { images: 'external', imageDir: '...' } untuk menulis gambar sebagai file terpisah |
| Output DOCX kehilangan tata letak halaman asli | mode: 'flow' default menyusun ulang konten seperti pengolah kata | Berikan { mode: 'textbox' } untuk mempertahankan geometri masing-masing halaman |
FAQ
Format apa yang dapat dikonversi dari PDF?
HTML, Markdown, dan DOCX untuk seluruh dokumen (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG dan PNG per halaman (Page.ToSvg() / Page.ToImage()); plus TIFF dan FDF/XFDF ekspor form-data.
Apakah mengonversi ke PDF/A mengubah dokumen asli saya?
Hanya jika Anda memanggil ConvertToPdfA() secara langsung pada dokumen tersebut. Panggil pada salinan — misalnya doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — untuk menjaga agar dokumen asli tidak dikonversi.
Bagaimana saya tahu apakah konversi PDF/A berhasil?
Periksa ConversionReport.passed. applied mencantumkan apa yang diperbaiki oleh konversi, dan unresolved mencantumkan apa yang tidak dapat diperbaiki — periksa unresolved bahkan ketika passed adalah true.
Apakah saya dapat mengekspor hanya nilai bidang formulir yang telah diisi, tanpa PDF itu sendiri?
Ya — exportFdfFile() dan exportXfdfFile() menulis nilai bidang AcroForm saat ini ke file FDF atau XFDF terpisah; importFdfFile() / importXfdfFile() membacanya kembali ke dalam dokumen.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Render setiap halaman ke format dokumen lain |
Page.ToSvg() / Page.ToImage() | Render satu halaman ke SVG atau PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Opsi rendering per-format |
Document.ConvertToPdfA() | Remediasi dokumen ke tingkat PDF/A dan validasi ulang |
ConversionReport | Hasil konversi: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Ekspor ke TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Ekspor atau impor nilai bidang AcroForm sebagai FDF/XFDF |