Libreria Node.js

officepress

File Word, Excel, PowerPoint, OpenDocument, Visio e Publisher in PDF, nel suo processo Node.js.

Senza pesanti dipendenze software Senza accesso alla rete PDF/A, PDF con tag
convert.js
import { readFile, writeFile } from 'node:fs/promises';
import { convertToPdf } from '@toupiesoft/officepress';

const docx = await readFile('report.docx');
const pdf = convertToPdf(docx);   // in process, offline
await writeFile('report.pdf', pdf);

Dimostrazione: una conversione in uno script Node.js, un lotto di 12 file in 9 formati e pagine confrontate con la stampa dell’applicazione che le ha create.

Cosa può costruire

/01

Sistemi documentali isolati

Archiviare, visualizzare e modificare documenti in una rete senza accesso a Internet. La conversione gira nel suo processo Node.js.

/02

Conversione in massa di file datati

Trasformare archivi di file .doc, .xls, .ppt, Visio e Publisher in PDF, in processi paralleli con un limite di tempo per file.

/03

Archiviazione a lungo termine

Uscita PDF/A (livelli 2 e 3) per documenti che devono restare leggibili per decenni, con protezione tramite password e compressione opzionali.

/04

Automazione e IA

Ogni documento può uscire anche come JSON strutturato (testo, stili, tabelle, impaginazione), pronto per indici di ricerca, estrazione di dati o modelli linguistici.

/05

Generazione di documenti

Scrivere documenti Word da JSON e cartelle Excel o OpenDocument dai suoi dati, poi stamparli in PDF nello stesso passaggio.

/06

Anteprime nella sua applicazione

Immagini delle pagine e PDF dei file caricati per portali, sistemi di ticket e visualizzatori, sul server o nel browser.

Formati

Word, Excel e PowerPoint dal 97 a oggi, OpenDocument, Visio e Publisher.

WordTutte le licenze
.docx .docm .dotx .rtf
ExcelTutte le licenze
.xlsx .xlsm .xlsb
PowerPointTutte le licenze
.pptx .pptm
OpenDocumentTutte le licenze
.odt .ods .odp .odg, flat XML
Office 97–2003Business
.doc .xls .ppt
VisioBusiness
.vsdx .vsd .vdx, stencil, modelli
PublisherBusiness
.pub, da Publisher 98
AltriTutte le licenze
.svg, file Office protetti da password

Confrontare con la stampa

Esempi →
Disegno Visio stampato da Visio (a sinistra) e convertito da officepress (a destra).
Disegno Visio stampato da Visio (a sinistra) e convertito da officepress (a destra).
Poster Publisher stampato da Publisher (a sinistra) e convertito da officepress (a destra).
Poster Publisher stampato da Publisher (a sinistra) e convertito da officepress (a destra).

In dettaglio

Cosa viene reso
  • Documenti di testo: stili, elenchi, tabelle (celle unite e annidate, righe di intestazione ripetute), sezioni con formato di pagina e intestazioni proprie, note a piè di pagina e note di chiusura, colonne, tabulazioni, campi (indice con numeri di pagina, PAGE, REF, SEQ, DATE), equazioni, commenti e revisioni tracciate su richiesta, collegamenti ipertestuali e segnalibri PDF.
  • Fogli di calcolo: formati numerici e di data, formattazione condizionale (scale di colori, barre dei dati, set di icone), grafici e immagini nella loro posizione di ancoraggio, aree di stampa, adattamento alla pagina, titoli ripetuti, interruzioni di pagina, intestazioni e piè di pagina. Le formule non vengono ricalcolate: vengono stampati i valori salvati nel file.
  • Presentazioni: master e layout, colori del tema, sfumature, immagini, tabelle, grafici, SmartArt dal disegno memorizzato nel file, note del relatore e diapositive nascoste su richiesta.
  • Visio: ereditarietà da master e temi, geometria (archi, spline, NURBS), connettori con punte di freccia, motivi di riempimento e sfumature, disegni in scala, più pagine.
  • Publisher: cornici di testo e articoli collegati, pagine master, immagini, forme, tabelle, sillabazione in otto lingue.
  • Caratteri: i caratteri installati sul server vengono associati per nome. Se mancano Arial, Times New Roman, Courier New o Calibri, i caratteri inclusi con metriche compatibili mantengono le interruzioni di riga. I caratteri Noto inclusi coprono greco, cirillico, ebraico, arabo, devanagari, thai, cinese, giapponese e coreano.
  • Output PDF: PDF 1.4; PDF/A-2b, 2u, 2a, 3b, 3u e 3a, verificati con veraPDF 1.30.2; PDF con tag; PDF/UA-1 per i file Word. Lo stesso input produce lo stesso PDF, byte per byte.
Sicurezza
  • In esecuzione la libreria usa solo moduli integrati in Node.js: zlib, fs, crypto, path, os, url e worker_threads. Con essa non viene installato alcun pacchetto npm.
  • Nessun accesso alla rete, nessun processo figlio, nessun eval o new Function, nessun add-on nativo.
  • Nessuna chiamata esterna: la libreria non contatta né ToupieSoft né altri.
  • Le macro non vengono mai eseguite. I file con macro vengono convertiti senza di esse.
  • Un input corrotto o non supportato solleva un errore tipizzato. Per un file legacy danneggiato si ricorre al solo testo.
  • convertToPdfAsync viene eseguito in un worker thread e accetta un limite di tempo (timeoutMs).
Prestazioni

Misurato il 14 ottobre 2026 con officepress c98a0ac: ogni documento convertito tre volte in un unico processo Node.js; viene riportata la mediana delle esecuzioni 2 e 3. Portatile con AMD Ryzen 9 5900HS (8 core), 32 GB di RAM, Windows 10, Node.js 24.15. Una conversione usa un core.

DocumentiMediana per pagina95 % dei file entro
Word, RTF, testo OpenDocument34 ms1,5 s
Fogli di calcolo25 ms0,85 s
Presentazioni31 ms1,7 s
Visio36 ms0,36 s
Publisher22 ms5,4 s
Totale31 ms1,7 s

I file di grandi dimensioni richiedono tempo e memoria: un file Publisher di 102 MB richiede 5,5 s e aggiunge 670 MB alla memoria del processo. Su un server, esegua le conversioni in un pool di worker thread e limiti la dimensione dei file caricati.

Come viene verificata la fedeltà

Ogni versione viene confrontata pagina per pagina con il PDF stampato dall’applicazione che ha creato il documento: Word, Excel, PowerPoint e Publisher 2021, Visio 2019, LibreOffice per OpenDocument. Ogni differenza riscontrata viene registrata con il file, la pagina e un’immagine, e una correzione conta solo quando il documento stesso viene stampato correttamente.

Gli esempi provengono da questo banco di prova. Scarichi il file sorgente e i due PDF, e confronti.

Limiti
  • Le formule non vengono ricalcolate.
  • L’output PDF non è cifrato né firmato.
  • Le deformazioni WordArt e gli effetti 3D sono resi solo in parte.
  • Le scritture diverse da latino, greco, cirillico, ebraico, arabo, devanagari, thai e CJK vengono disegnate senza shaping completo.
  • Se un carattere manca sul server, le interruzioni di riga possono differire leggermente da Office.

L’elenco completo è nella documentazione.

Integrazione
import { convertToPdf } from '@toupiesoft/officepress';

app.get('/documents/:id/preview.pdf', async (req, res) => {
  const file = await storage.read(req.params.id);       // il suo storage
  res.type('application/pdf').send(convertToPdf(file));  // nel processo, offline
});
  • Nel processo: convertToPdf è sincrono; adatto a script, job batch e traffico ridotto.
  • Pool di worker: per un servizio di anteprima, un pool fisso di worker_threads dietro una coda, dimensionato sul numero di core meno uno. Veda Anteprime dei documenti.

La provi sui suoi file

Una licenza di prova di 30 giorni: la libreria completa nella sua applicazione.