Introduzione

Aspose.PDF FOSS per TypeScript è una nuova libreria open-source per lavorare con documenti PDF dal codice Node.js. È rilasciata sotto licenza MIT e viene distribuita come pacchetto @asposefoss/pdf, richiedendo solo Node.js (>=22) a runtime — non ci sono altre dipendenze a runtime.

La libreria è organizzata attorno alle classi Document e Page. Document.OpenFile() e Document.Open() caricano un PDF dal disco o da byte in memoria, e Document.New() avvia un documento vuoto; ogni pagina in doc.Pages espone metodi per aggiungere testo, immagini, annotazioni e campi AcroForm, oltre a convertirsi in altri formati. Da lì, il API copre la divisione, l’unione e il riordino delle pagine, la conversione dei documenti in HTML, Markdown, DOCX, SVG e immagini raster, l’aggiunta e la fissazione delle annotazioni, la creazione di moduli interattivi e la crittografia, firma o redazione del risultato.

Questa release è destinata agli sviluppatori che necessitano di elaborazione PDF all’interno di un codice Node.js o TypeScript senza una licenza commerciale: pipeline di assemblaggio di documenti, strumenti di pubblicazione che convertono PDF in formati pronti per il web, automazione di compilazione di moduli e servizi che devono redigere o crittografare PDF sensibili prima della distribuzione. Il progetto è attualmente alla versione 0.1.0 e in sviluppo attivo in fase iniziale, quindi le API e la copertura delle funzionalità potrebbero evolvere prima di una release stabile.


Cosa è incluso

Gestione di Documenti e Pagine

Document.OpenFile() / Document.Open() caricano un PDF dal disco o da un Uint8Array in memoria; Document.New() avvia un documento vuoto. Le pagine possono essere divise in documenti separati con Document.Split(), estratte con Document.ExtractPages(), unite con Document.Merge(), o aggiunte a un documento esistente con Document.Append(). Document.WriteTo() scrive nuovamente il risultato, opzionalmente compresso.

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

Conversione di Formato

Interi documenti vengono renderizzati in HTML con Document.ToHtml() e in Markdown con sapore GitHub usando Document.ToMarkdown(). Pagine singole vengono renderizzate in SVG autonomo con Page.ToSvg() o in byte PNG raster con Page.ToImage(). Document.ToDocx() / Page.ToDocx() producono output .docx a flusso riorganizzabile o a layout fisso.

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

Annotazioni

Ogni Page espone direttamente i metodi di annotazione: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() e Page.AddStrikeOut() aggiungono markup di testo; Page.AddTextNote(), Page.AddFreeText() e Page.AddStamp() aggiungono note adesive, testo indipendente e annotazioni a timbro di gomma. Sottotipi tipizzati come MarkupAnnotation e StampAnnotation espongono un metodo Flatten() per incorporare l’annotazione nel contenuto della pagina.

AcroForms

La classe Form crea campi interattivi direttamente: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() e AddPushButton() restituiscono ciascuno una sottoclasse tipizzata di Field. L’invocazione di SetStyle() o GenerateAppearance() su un campo aggiorna il suo aspetto renderizzato, e Document.FlattenForm() incorpora il valore corrente di ogni campo nel contenuto statico della pagina.

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

Sicurezza e Redazione

Document.WriteTo() accetta un’opzione encrypt che supporta AES-128, AES-256 o RC4, con una password separata per utente e proprietario e Permissions granulare. Le regioni sensibili o il testo corrispondente possono essere rimosse permanentemente con Document.Redact(), Document.RedactText() e Page.ApplyRedactions(), configurate tramite 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,
  },
});

Avvio rapido

Installa il pacchetto, quindi apri un PDF esistente, modifica le sue pagine e i metadati, e salva il risultato:

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

Formati supportati

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

Open Source & Licenze

Aspose.PDF FOSS per TypeScript è rilasciato sotto licenza MIT, con il codice sorgente pubblicato su GitHub. Non c’è alcuna filigrana di valutazione, limite d’uso o file di licenza separato da gestire, e la libreria può essere utilizzata in prodotti commerciali senza royalties.

Il pacchetto è attualmente alla versione 0.1.0, riflettendo uno sviluppo attivo in fase iniziale. Node.js (>=22) è l’unico requisito di runtime, e il pacchetto non ha altre dipendenze di terze parti.


Guida introduttiva

Risorse correlate