Introduktion

Aspose.PDF FOSS för TypeScript är ett nytt open-source-bibliotek för att arbeta med PDF-dokument från Node.js-kod. Det är släppt under MIT-licensen och levereras som paketet @asposefoss/pdf, och kräver endast Node.js (>=22) vid körning — inga andra körningsberoenden finns.

Biblioteket är organiserat kring klasserna Document och Page. Document.OpenFile() och Document.Open() laddar en PDF från disk eller från minnes-bytes, och Document.New() startar ett tomt dokument; varje sida i doc.Pages exponerar metoder för att lägga till text, bilder, annotationer och AcroForm-fält, samt för att konvertera sig själv till andra format. Därefter täcker API splittring, sammanslagning och omordning av sidor, konvertering av dokument till HTML, Markdown, DOCX, SVG och rasterbilder, tillägg och plattläggning av annotationer, byggande av interaktiva formulär samt kryptering, signering eller maskning av resultatet.

Denna version är avsedd för utvecklare som behöver PDF-behandling i en Node.js- eller TypeScript-kodbas utan en kommersiell licens: dokument-samlings-pipelines, publiceringsverktyg som renderar PDF-filer till webbklara format, automatisering av formulärifyllning och tjänster som måste maska eller kryptera känsliga PDF-filer innan distribution. Projektet är för närvarande i version 0.1.0 och under aktiv tidig utveckling, så API:er och funktionsomfång kan förändras innan en stabil version släpps.


Vad som ingår

Dokument- och sidhantering

Document.OpenFile() / Document.Open() laddar en PDF från disk eller i minnet Uint8Array; Document.New() startar ett tomt dokument. Sidor kan splittras i separata dokument med Document.Split(), extraheras med Document.ExtractPages(), slås samman med Document.Merge() eller läggas till i ett befintligt dokument med Document.Append(). Document.WriteTo() skriver tillbaka resultatet, eventuellt komprimerat.

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

Formatkonvertering

Hela dokument renderas till HTML med Document.ToHtml() och till GitHub-smakad Markdown med Document.ToMarkdown(). Enskilda sidor renderas till fristående SVG med Page.ToSvg() eller raster-PNG-bytes med Page.ToImage(). Document.ToDocx() / Page.ToDocx() producerar omflöde eller fast layout .docx output.

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

Anmärkningar

Varje Page exponerar annoteringsmetoder direkt: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() och Page.AddStrikeOut() lägger till textmarkering; Page.AddTextNote(), Page.AddFreeText() och Page.AddStamp() lägger till klisterlappar, fristående text och gummistämpel-annoteringar. Typade underklasser såsom MarkupAnnotation och StampAnnotation exponerar en Flatten()-metod för att integrera annoteringen i sidans innehåll.

AcroForms

Klassen Form bygger interaktiva fält direkt: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() och AddPushButton() returnerar var och en en typad Field underklass. Att anropa SetStyle() eller GenerateAppearance() på ett fält uppdaterar dess renderade utseende, och Document.FlattenForm() integrerar varje fälts aktuella värde i statiskt sidinnehåll.

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

Säkerhet och maskering

Document.WriteTo() accepterar ett encrypt-alternativ som stödjer AES-128, AES-256 eller RC4, med separata användar- och ägarlösenord samt granulerad Permissions. Känsliga regioner eller matchande text kan permanent tas bort med Document.Redact(), Document.RedactText() och Page.ApplyRedactions(), konfigurerade via 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,
  },
});

Snabbstart

Installera paketet, öppna sedan en befintlig PDF, redigera dess sidor och metadata, och spara resultatet:

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

Stödda format

FormatFiländelseLäsaSkriva
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Öppen källkod & licensiering

Aspose.PDF FOSS för TypeScript släpps under MIT-licensen, med källkoden publicerad på GitHub. Det finns ingen utvärderingsvattenstämpel, ingen användningsgräns eller separat licensfil att hantera, och biblioteket får användas i kommersiella produkter utan royalties.

Paketet är för närvarande i version 0.1.0, vilket speglar aktiv utveckling i ett tidigt stadium. Node.js (>=22) är det enda runtime-kravet, och paketet har inga andra tredjepartsberoenden.


Komma igång

Relaterade resurser