Pendahuluan
Aspose.PDF FOSS untuk TypeScript adalah perpustakaan open-source baru untuk bekerja dengan dokumen PDF dari kode Node.js. Ini dirilis di bawah lisensi MIT dan tersedia sebagai paket @asposefoss/pdf, hanya memerlukan Node.js (>=22) pada runtime — tidak ada dependensi runtime lainnya.
Perpustakaan ini diatur di sekitar kelas Document dan Page. Document.OpenFile() dan Document.Open() memuat PDF dari disk atau byte di memori, dan Document.New() memulai dokumen kosong; setiap halaman di doc.Pages menyediakan metode untuk menambahkan teks, gambar, anotasi, dan bidang AcroForm, serta mengonversi dirinya ke format lain. Dari sana, API mencakup pemisahan, penggabungan, dan pengurutan ulang halaman, mengonversi dokumen ke HTML, Markdown, DOCX, SVG, dan gambar raster, menambahkan dan meratakan anotasi, membangun formulir interaktif, serta mengenkripsi, menandatangani, atau menyensor hasilnya.
Rilis ini ditujukan bagi pengembang yang membutuhkan pemrosesan PDF di dalam basis kode Node.js atau TypeScript tanpa lisensi komersial: jalur perakitan dokumen, alat penerbitan yang merender PDF ke format siap web, otomatisasi pengisian formulir, dan layanan yang perlu menyensor atau mengenkripsi PDF sensitif sebelum distribusi. Proyek ini saat ini berada pada versi 0.1.0 dan dalam pengembangan tahap awal yang aktif, sehingga API dan cakupan fitur dapat berubah sebelum rilis stabil.
Apa yang Termasuk
Manajemen Dokumen dan Halaman
Document.OpenFile() / Document.Open() memuat PDF dari disk atau Uint8Array di memori; Document.New() memulai dokumen kosong. Halaman dapat dipisah menjadi dokumen terpisah dengan Document.Split(), diekstrak dengan Document.ExtractPages(), digabungkan dengan Document.Merge(), atau ditambahkan ke dokumen yang ada dengan Document.Append(). Document.WriteTo() menulis kembali hasilnya, secara opsional terkompresi.
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
Konversi Format
Seluruh dokumen dirender ke HTML dengan Document.ToHtml() dan ke Markdown gaya GitHub dengan Document.ToMarkdown(). Halaman individual dirender menjadi SVG mandiri dengan Page.ToSvg() atau byte PNG raster dengan Page.ToImage(). Document.ToDocx() / Page.ToDocx() menghasilkan output .docx yang dapat mengalir ulang atau berlayout tetap.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
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
Anotasi
Setiap Page secara langsung menyediakan metode anotasi: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly(), dan Page.AddStrikeOut() menambahkan penandaan teks; Page.AddTextNote(), Page.AddFreeText(), dan Page.AddStamp() menambahkan catatan tempel, teks bebas, dan anotasi stempel karet. Subtipe bertipe seperti MarkupAnnotation dan StampAnnotation menyediakan metode Flatten() untuk mengintegrasikan anotasi ke dalam konten halaman.
AcroForms
Kelas Form membangun bidang interaktif secara langsung: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox(), dan AddPushButton() masing‑masing mengembalikan subkelas Field yang bertipe. Memanggil SetStyle() atau GenerateAppearance() pada sebuah bidang memperbarui tampilan yang dirender, dan Document.FlattenForm() mengintegrasikan nilai saat ini dari setiap bidang ke dalam konten halaman statis.
function addFormFields(doc: Document, page: Page): void {
const form = doc.Form;
const pageNum = page.Number;
// Text field
form.AddTextField({
page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
});
// Checkbox
form.AddCheckbox({
page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
checked: true,
});
}
Keamanan dan Redaksi
Document.WriteTo() menerima opsi encrypt yang mendukung AES-128, AES-256, atau RC4, dengan kata sandi pengguna dan pemilik terpisah serta Permissions yang granular. Wilayah sensitif atau teks yang cocok dapat dihapus secara permanen dengan Document.Redact(), Document.RedactText(), dan Page.ApplyRedactions(), yang dikonfigurasi melalui RedactOptions.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
doc.WriteTo('locked.pdf', {
encrypt: {
userPassword: 'open-me', // required to open (default '')
ownerPassword: 'full-rights', // default: same as userPassword
algorithm: 'aes256', // 'aes256' (default) | 'aes128' | 'rc4'
permissions: { copying: false, modifying: false },
encryptMetadata: true,
},
});
Panduan Cepat
Pasang paket, lalu buka PDF yang ada, edit halaman serta metadata‑nya, dan simpan hasilnya:
asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams
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 kode sumber dipublikasikan di GitHub. Tidak ada watermark evaluasi, batas penggunaan, atau berkas lisensi terpisah yang harus dikelola, dan pustaka ini dapat digunakan dalam produk komersial tanpa royalti.
Paket ini 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 ketergantungan pihak ketiga lainnya.