Pendahuluan
Setiap kemampuan dalam Aspose.PDF FOSS untuk TypeScript dicapai melalui dua kelas: Document dan Page. Document memiliki koleksi halaman dan semua yang berskala dokumen — metadata, penanda buku, label halaman, serta simpan/muat — sementara setiap Page dalam doc.Pages memiliki semua yang berskala pada halaman itu: konten, anotasi, dan bidang formulir. Setelah dua kelas itu dikenal, sisanya dari permukaan pustaka — konversi, anotasi, formulir, keamanan — sebenarnya hanyalah metode tambahan pada dua objek yang sama.
Posting ini memberikan tinjauan lebih dekat pada bagian-bagian permukaan inti yang hanya disebut secara singkat dalam posting pengantar: menyusun dokumen dari dokumen lain, membuat halaman dari nol, menambahkan pohon penanda buku untuk navigasi, dan menandai konten untuk aksesibilitas. Keempatnya hanyalah pemanggilan metode biasa — tidak ada modul terpisah yang harus diimpor, tidak ada ketergantungan tambahan selain paket @asposefoss/pdf itu sendiri.
Inilah operasi yang muncul setelah alur kerja PDF melewati “buka satu berkas, ubah, simpan”: menggabungkan laporan dari beberapa sumber menjadi satu dokumen, menghasilkan halaman secara programatik alih-alih memulai dari templat, serta membuat output dapat dinavigasi dan dapat diakses, bukan hanya secara visual saja.
Apa yang Disertakan
Menyusun dan Menata Ulang Dokumen
Document.Split() memecah sebuah dokumen menjadi satu Document halaman tunggal baru per halaman, sesuai urutan halaman. Document.ExtractPages() menyalin sekumpulan nomor halaman berbasis 1 yang diberikan ke dalam Document baru yang berdiri sendiri, dalam urutan yang diberikan — halaman yang sama dapat diulang. Halaman dari satu dokumen juga dapat disalin ke dokumen lain: Document.Append() menyalin setiap halaman dari dokumen sumber ke akhir dokumen target, dan Document.InsertPage() menyalin satu halaman antar dokumen pada posisi berbasis 1 tertentu.
import { Document } from '@asposefoss/pdf';
const report = Document.OpenFile('report.pdf');
const parts = report.Split(); // one Document per page
const chapter = report.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
const cover = Document.OpenFile('cover.pdf');
report.InsertPage(1, cover.Pages[0]); // copy a single page across documents
report.Append(chapter); // copy chapter's pages onto report
report.WriteTo('assembled.pdf');
Beberapa dokumen juga dapat digabungkan menjadi satu dalam satu panggilan dengan Document.Merge(), yang membangun Document baru dari salinan setiap halaman dari setiap dokumen yang diberikan kepadanya, secara berurutan.
Membangun Halaman dari Awal
Document.New() membuat dokumen dari nol: nol halaman ketika format diabaikan, atau satu halaman kosong dengan PageFormat yang diberikan ketika satu diberikan. Halaman kosong tambahan berasal dari Document.AddPage(), yang juga menerima PageFormat (atau Page yang sudah ada untuk menyalin ukurannya). Teks digambar pada halaman dengan Page.AddText(), diposisikan pada titik (x, y) dalam ruang pengguna PDF.
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4); // one blank A4 page
doc.Pages[0].AddText('Hello', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape()); // append more as you go
doc.WriteTo('scratch.pdf');
Bookmark dan Navigasi Dokumen
Garis besar dokumen (panel bookmark yang ditampilkan sebagian besar pembaca PDF di samping halaman) dibaca dengan Document.GetOutlines() dan diganti seluruhnya dengan Document.SetOutlines(), masing-masing bekerja dengan pohon nilai OutlineItem. Setiap OutlineItem membawa Title, sebuah tujuan Dest, dan secara opsional Children untuk entri bersarang, serta petunjuk tampilan seperti Open (diperluas secara default) dan Bold.
import { Document, OutlineItem } from '@asposefoss/pdf';
const items: OutlineItem[] = [
{ Title: 'Introduction', Dest: { name: 'intro' } },
{
Title: 'Chapters',
Open: true,
Children: [
{ Title: 'Chapter 1', Dest: { name: 'ch1' } },
{ Title: 'Chapter 2', Dest: { name: 'ch2' } },
],
},
];
doc.SetOutlines(items);
Tujuan yang dinamai dengan cara ini ({ name: 'intro' }) diselesaikan melalui tabel tujuan bernama dokumen, yang dikelola langsung oleh Document.GetNamedDestinations() dan Document.SetNamedDestination() ketika sebuah bookmark perlu menunjuk ke tujuan yang tidak terkait dengan konten halaman.
Teks Terstruktur dan Penandaan Aksesibilitas
Document.GetStructTree() mengembalikan pohon struktur logis dokumen (atau null ketika dokumen tidak ditandai), dan Document.CreateStructTree() membangun satu, menandai dokumen sebagai Tagged. Setelah pohon struktur ada, Page.GetStructuredText() mengembalikan teks halaman sebagai nilai TextBlock — fragmen yang diposisikan yang sudah dikelompokkan menjadi baris dan blok mirip paragraf — yang merupakan input bagi proses penandaan manual: menelusuri blok, menentukan mana yang merupakan judul versus teks badan, dan menambahkan elemen yang sesuai ke dalam pohon.
function handTagPage(doc: Document, page: Page, heading: string): void {
const root = doc.GetStructTree();
if (!root) throw new Error('handTagPage: the document is not tagged yet');
for (const block of page.GetStructuredText()) {
const text = block.text.trim();
if (text.length === 0) continue;
const el = root.Append(text.startsWith(heading) ? 'H2' : 'P');
el.MarkContent(page, block.quad);
}
}
Pohon struktur ber-tag adalah apa yang dibangun oleh fitur hilir: ekspor HTML semantik melakukan aliran ulang darinya alih-alih kembali ke tata letak heuristik sederhana, dan Document.ValidatePdfUa() memeriksa dokumen terhadap subset standar aksesibilitas PDF/UA yang bergantung pada keberadaan tag.
Mulai Cepat
Instal paket, lalu buka dokumen, keluarkan dan gabungkan kembali subset halamannya, dan simpan hasilnya:
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildimport { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('report.pdf');
const chapter = doc.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
const cover = Document.OpenFile('cover.pdf');
doc.InsertPage(1, cover.Pages[0]); // copy a single page across documents
doc.Append(chapter); // copy chapter's pages onto doc
doc.WriteTo('assembled.pdf');
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
Sumber Terbuka & Lisensi
Aspose.PDF FOSS untuk TypeScript dirilis di bawah lisensi MIT, dengan sumber dipublikasikan di GitHub. Tidak ada watermark evaluasi, batas penggunaan, atau file lisensi terpisah yang harus dikelola, dan perpustakaan dapat digunakan dalam produk komersial tanpa royalti.
Paket saat ini berada pada versi 0.1.0, mencerminkan pengembangan tahap awal yang aktif. Node.js (>=22) adalah satu-satunya persyaratan runtime, dan paket tidak memiliki dependensi pihak ketiga lainnya.