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

FormatEkstensiBacaTulis
PDFpdf
Markdownmd
SVGsvg
TIFFtiff
DOCXdocx
HTMLhtml
PNGpng
EPUBepub

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.


Memulai

Sumber Daya Terkait