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 buildimport { 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
| Formato | Estensione | Leggi | Scrivi |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
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.