Cara Mengonversi Dokumen PDF dalam TypeScript
Panduan ini menunjukkan cara mengonversi konten PDF ke format lain dengan Aspose.PDF FOSS untuk TypeScript. Page mengekspor satu halaman sebagai SVG atau gambar raster; Document mengekspor seluruh file sebagai HTML, Markdown, atau DOCX, dan dapat memvalidasi serta mengonversi dokumen ke PDF/A. Dibutuhkan Node.js 22 atau yang lebih baru.
Panduan Langkah demi Langkah
Langkah 1: Pasang Paket
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildVerifikasi instalasi dengan mengimpor kelas Document dalam file TypeScript baru — baris ini seharusnya tidak menghasilkan error setelah paket dipasang:
import { Document } from '@asposefoss/pdf';Langkah 2: Impor Kelas yang Diperlukan
Impor Document untuk membuka file; metode konversi yang digunakan di bawah dipanggil langsung pada instance Document dan Page yang dikembalikan, jadi tidak diperlukan impor tambahan:
import { Document } from '@asposefoss/pdf';Langkah 3: Konversi Halaman ke SVG atau Gambar Raster
Page.ToSvg() mengembalikan string <svg> yang berdiri sendiri. Page.ToImage() merender halaman menjadi byte raster; scale bersifat relatif terhadap 72 DPI asli PDF, sehingga scale: 2 merender pada 144 DPI:
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('input.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
Langkah 4: Konversi Dokumen ke HTML atau Markdown
Document.ToHtml() dalam mode default (semantik) mengalirkan kembali konten dari pohon struktur menjadi judul dan paragraf; berikan { mode: 'fixed' } untuk mereproduksi setiap halaman sebagai SVG yang diposisikan dan teks yang ditempatkan secara absolut. Document.ToMarkdown() menghasilkan GFM Markdown untuk seluruh dokumen:
const semanticHtml = doc.ToHtml(); // reflowable markup, all pages
const fixedHtml = doc.ToHtml({ mode: 'fixed', fonts: 'embed' }); // positioned, fonts embedded
const markdown = doc.ToMarkdown(); // GFM Markdown, all pages
Mode semantik membaca pohon struktur yang dibangun oleh Document.GetStructTree() / Document.CreateStructTree() — pada dokumen tanpa tag, ia kembali ke tubuh heuristik dan ekspor kehilangan struktur judulnya.
Langkah 5: Konversi Dokumen ke DOCX
Document.ToDocx() mengembalikan .docx byte dengan konten yang diatur ulang dan gambar yang dikemas di dalamnya; berikan { mode: 'textbox' } untuk mempertahankan geometri tetap masing-masing halaman alih-alih mengatur ulang:
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
Langkah 6: Validasi dan Konversi ke PDF/A
Document.ValidatePdfA(level), Document.ValidatePdfX(level), dan Document.ValidatePdfUa() mengembalikan ValidationReport yang menjelaskan apakah dokumen memenuhi standar yang disebutkan. Document.ConvertToPdfA(level, opts) mengembalikan ConversionReport yang mencantumkan perbaikan apa yang diterapkan dan masalah apa yang masih belum terselesaikan. Jalankan konversi pada salinan Document.ExtractPages() ketika dokumen langsung masih harus disimpan tanpa konversi:
const report = doc.ValidatePdfA('2b');
console.log(report.Passed);
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(conversion.applied.length, conversion.unresolved.length, conversion.passed);
copy.Save();Masalah Umum dan Perbaikan
Document.ToHtml() kehilangan struktur judul. Mode semantik menelusuri pohon struktur, jadi harus dijalankan setelah proses penandaan — either Document.AutoTag() atau penandaan buatan tangan melalui StructTreeRoot.Append(). ToHtml() beralih ke tubuh heuristik ketika GetStructTree() returns null.
ConvertToPdfA() mengubah file yang Anda maksudkan untuk tetap tidak dikonversi. Jalankan konversi pada salinan dari Document.ExtractPages(), lalu simpan salinan tersebut secara terpisah — ConvertToPdfA() mengubah dokumen tempat ia dipanggil.
ValidatePdfA() melaporkan kegagalan pada kali pertama dijalankan. Penyebab umum adalah font standar yang tidak tersemat dan yang hilang /OutputIntent — periksa report.Passed dan temuan aturan individual untuk melihat kondisi mana yang tidak terpenuhi.
Page.ToImage() output terlihat beresolusi rendah. scale berdasarkan 72 DPI; naikkan (misalnya { scale: 2 } untuk 144 DPI) untuk output kualitas cetak.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara ekspor semantik dan tetap HTML?
Mode semantik mengalir ulang dokumen dari pohon strukturnya menjadi markup yang tampil baik di peramban pada lebar apa pun. Mode tetap mereproduksi setiap halaman sebagai SVG yang diposisikan dan teks yang ditempatkan secara absolut, mencocokkan tata letak asli secara tepat.
Apakah Document.ToDocx() mempertahankan tata letak halaman asli?
Secara default ToDocx() mengalir ulang konten. Berikan { mode: 'textbox' } untuk mempertahankan geometri tetap masing-masing halaman sebagai gantinya.
Bagaimana saya memeriksa apakah sebuah dokumen memenuhi PDF/A sebelum mengonversinya?
Panggil Document.ValidatePdfA(level) (misalnya '2b') dan periksa ValidationReport yang dikembalikan — ini melaporkan status saat ini tanpa mengubah dokumen.
Apakah saya dapat mengonversi hanya sebagian halaman?
Ya — bangun subset Document terlebih dahulu dengan Document.ExtractPages(), kemudian panggil metode konversi (ToHtml(), ToDocx(), ConvertToPdfA(), dan seterusnya) pada subset itu.