Cara Mengonversi Dokumen PDF dalam TypeScript

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 build

Verifikasi 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.

Lihat Juga

 Bahasa Indonesia