Wprowadzenie

Aspose.PDF FOSS dla TypeScript to nowa biblioteka open-source do pracy z dokumentami PDF z kodu Node.js. Jest udostępniona na licencji MIT i dystrybuowana jako pakiet @asposefoss/pdf, wymagający jedynie Node.js (>=22) w czasie wykonania — nie ma innych zależności w czasie wykonania.

Biblioteka jest zorganizowana wokół klas Document i Page. Document.OpenFile() i Document.Open() ładują PDF z dysku lub z pamięci, a Document.New() rozpoczyna pusty dokument; każda strona w doc.Pages udostępnia metody dodawania tekstu, obrazów, adnotacji oraz pól AcroForm, a także konwertowania siebie na inne formaty. Następnie API obejmuje dzielenie, scalanie i przestawianie stron, konwertowanie dokumentów do HTML, Markdown, DOCX, SVG i obrazów rastrowych, dodawanie i spłaszczanie adnotacji, tworzenie interaktywnych formularzy oraz szyfrowanie, podpisywanie lub redagowanie wyniku.

To wydanie jest przeznaczone dla programistów, którzy potrzebują przetwarzania PDF w kodzie Node.js lub TypeScript bez komercyjnej licencji: pipeline’y składania dokumentów, narzędzia publikacyjne renderujące PDF do formatów gotowych na sieć, automatyzacja wypełniania formularzy oraz usługi, które muszą redagować lub szyfrować wrażliwe PDF-y przed dystrybucją. Projekt jest obecnie w wersji 0.1.0 i znajduje się w aktywnym wczesnym etapie rozwoju, więc API i zakres funkcji mogą się zmieniać przed stabilnym wydaniem.


Co jest w zestawie

Zarządzanie dokumentem i stronami

Document.OpenFile() / Document.Open() ładują PDF z dysku lub z pamięci Uint8Array; Document.New() rozpoczyna pusty dokument. Strony można podzielić na oddzielne dokumenty przy użyciu Document.Split(), wyodrębnić przy pomocy Document.ExtractPages(), scalić przy pomocy Document.Merge() lub dopisać do istniejącego dokumentu przy użyciu Document.Append(). Document.WriteTo() zapisuje wynik z powrotem, opcjonalnie skompresowany.

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

Konwersja formatu

Całe dokumenty renderują się do HTML przy użyciu Document.ToHtml() oraz do GitHub-smakowanego Markdownu przy użyciu Document.ToMarkdown(). Poszczególne strony renderują się jako samodzielny SVG przy użyciu Page.ToSvg() lub jako rasteryzowane bajty PNG przy użyciu Page.ToImage(). Document.ToDocx() / Page.ToDocx() generują wyjście .docx w formacie przepływowym lub o stałym układzie.

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

Adnotacje

Każdy Page udostępnia bezpośrednio metody adnotacji: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() i Page.AddStrikeOut() dodają znacznikowanie tekstu; Page.AddTextNote(), Page.AddFreeText() i Page.AddStamp() dodają notatki samoprzylepne, samodzielny tekst oraz adnotacje w formie pieczęci. Typowane podtypy, takie jak MarkupAnnotation i StampAnnotation, udostępniają metodę Flatten(), aby wbudować adnotację w treść strony.

AcroForms

Klasa Form buduje interaktywne pola bezpośrednio: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() i AddPushButton(), każdy zwraca typową podklasę Field. Wywołanie SetStyle() lub GenerateAppearance() na polu odświeża jego renderowany wygląd, a Document.FlattenForm() wstawia bieżącą wartość każdego pola do statycznej treści strony.

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

Bezpieczeństwo i Redakcja

Document.WriteTo() akceptuje opcję encrypt obsługującą AES-128, AES-256 lub RC4, z oddzielnym hasłem użytkownika i właściciela oraz szczegółowym Permissions. Wrażliwe regiony lub dopasowany tekst mogą być trwale usunięte przy użyciu Document.Redact(), Document.RedactText() i Page.ApplyRedactions(), konfigurowane przez 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,
  },
});

Szybki start

Zainstaluj pakiet, a następnie otwórz istniejący plik PDF, edytuj jego strony i metadane oraz zapisz wynik:

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

Obsługiwane formaty

FormatRozszerzenieOdczytZapis
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Open Source i licencjonowanie

Aspose.PDF FOSS dla TypeScript jest wydany na licencji MIT, a kod źródłowy jest opublikowany na GitHub. Nie ma znaków wodnych w wersji próbnej, ograniczeń użytkowania ani oddzielnego pliku licencyjnego do zarządzania, a biblioteka może być używana w produktach komercyjnych bez opłat licencyjnych.

Pakiet jest obecnie w wersji 0.1.0, co odzwierciedla aktywny wczesny etap rozwoju. Node.js (>=22) jest jedynym wymogiem środowiska uruchomieniowego, a pakiet nie ma innych zależności zewnętrznych.


Rozpoczęcie

Powiązane zasoby