Giriş

Aspose.PDF FOSS for TypeScript, Node.js kodundan PDF belgeleriyle çalışmak için yeni bir açık kaynak kütüphanedir. MIT lisansı altında yayınlanmıştır ve @asposefoss/pdf paketi olarak sunulur, çalışma zamanında yalnızca Node.js (>=22) gerekir — başka bir çalışma zamanı bağımlılığı yoktur.

Kütüphane, Document ve Page sınıfları etrafında düzenlenmiştir. Document.OpenFile() ve Document.Open(), bir PDF’yi diskten veya bellek içi baytlardan yükler, ve Document.New() boş bir belge başlatır; doc.Pages içindeki her sayfa, metin, görüntü, açıklama ve AcroForm alanları eklemek için yöntemler ve kendisini diğer formatlara dönüştürme yeteneği sunar. Buradan, API sayfaların bölünmesi, birleştirilmesi ve yeniden sıralanması, belgelerin HTML, Markdown, DOCX, SVG ve raster görüntülere dönüştürülmesi, açıklamaların eklenmesi ve düzleştirilmesi, etkileşimli formların oluşturulması ve sonucun şifrelenmesi, imzalanması veya redakte edilmesi konularını kapsar.

Bu sürüm, ticari lisans olmadan bir Node.js veya TypeScript kod tabanında PDF işleme ihtiyacı duyan geliştiriciler içindir: belge birleştirme hatları, PDF’leri web’e hazır formatlara dönüştüren yayınlama araçları, form doldurma otomasyonu ve dağıtımdan önce hassas PDF’leri redakte veya şifrelemesi gereken hizmetler. Proje şu anda 0.1.0 sürümünde ve aktif erken aşama geliştirme sürecindedir, bu nedenle API’ler ve özellik kapsamı kararlı bir sürümden önce değişebilir.


Neler Dahil

Belge ve Sayfa Yönetimi

Document.OpenFile() / Document.Open() bir PDF’yi diskten veya bellek içi Uint8Array üzerinden yükler; Document.New() boş bir belge başlatır. Sayfalar, Document.Split() ile ayrı belgelere bölünebilir, Document.ExtractPages() ile çıkarılabilir, Document.Merge() ile birleştirilebilir veya Document.Append() ile mevcut bir belgeye eklenebilir. Document.WriteTo() sonucu geri yazar, isteğe bağlı olarak sıkıştırılmış.

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();

Biçim Dönüştürme

Tüm belgeler HTML’a Document.ToHtml() ile ve GitHub tadında Markdown’a Document.ToMarkdown() ile oluşturulur. Tek tek sayfalar bağımsız SVG’ye Page.ToSvg() veya raster PNG baytlarına Page.ToImage() ile oluşturulur. Document.ToDocx() / Page.ToDocx() yeniden akışlı veya sabit düzenli .docx çıktısı üretir.

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

Açıklamalar

Her Page, açıklama yöntemlerini doğrudan ortaya çıkarır: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() ve Page.AddStrikeOut() metin işaretlemesi ekler; Page.AddTextNote(), Page.AddFreeText() ve Page.AddStamp() yapışkan notlar, bağımsız metin ve kauçuk damga açıklamaları ekler. MarkupAnnotation ve StampAnnotation gibi tiplenmiş alt tipler, açıklamayı sayfa içeriğine yerleştirmek için bir Flatten() yöntemi ortaya çıkarır.

AcroForms

Form sınıfı etkileşimli alanları doğrudan oluşturur: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() ve AddPushButton() her biri tiplenmiş bir Field alt sınıfı döndürür. Bir alanda SetStyle() ya da GenerateAppearance() çağırmak, render edilen görünümünü yeniler ve Document.FlattenForm() her alanın mevcut değerini statik sayfa içeriğine yerleştirir.

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,
  });
}

Güvenlik ve Kırpma

Document.WriteTo(), AES-128, AES-256 veya RC4 destekleyen bir encrypt seçeneğini kabul eder, ayrı bir kullanıcı ve sahibi parolası ve ayrıntılı Permissions ile. Hassas bölgeler veya eşleşen metinler, Document.Redact(), Document.RedactText() ve Page.ApplyRedactions() ile kalıcı olarak kaldırılabilir, RedactOptions aracılığıyla yapılandırılır.

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,
  },
});

Hızlı Başlangıç

Paketi kurun, ardından mevcut bir PDF’yi açın, sayfalarını ve meta verilerini düzenleyin ve sonucu kaydedin:

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

Desteklenen Formatlar

BiçimUzantıOkuYaz
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Açık Kaynak & Lisanslama

Aspose.PDF FOSS, TypeScript için MIT lisansı altında yayımlanmıştır, kaynak GitHub üzerinde yayınlanmıştır. Değerlendirme filigranı, kullanım sınırı veya yönetilecek ayrı bir lisans dosyası yoktur ve kütüphane telif ücreti almadan ticari ürünlerde kullanılabilir.

Paket şu anda 0.1.0 sürümündedir ve aktif erken aşama geliştirmeyi yansıtmaktadır. Node.js (>=22) tek çalışma zamanı gereksinimidir ve paketin başka üçüncü taraf bağımlılığı yoktur.


Başlarken

İlgili Kaynaklar