Bibliothèque Node.js

officepress

Les fichiers Word, Excel, PowerPoint, OpenDocument, Visio et Publisher en PDF, dans votre propre processus Node.js.

Sans dépendances logicielles lourdes Sans accès réseau PDF/A, PDF balisé
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);

Démonstration : une conversion dans un script Node.js, un lot de 12 fichiers en 9 formats, et des pages comparées avec l’impression de l’application qui les a créées.

Ce que vous pouvez construire

/01

Systèmes documentaires isolés

Archiver, prévisualiser et modifier des documents sur un réseau sans accès à Internet. La conversion tourne dans votre propre processus Node.js.

/02

Conversion en masse de fichiers anciens

Transformer des archives de fichiers .doc, .xls, .ppt, Visio et Publisher en PDF, dans des processus parallèles avec une limite de temps par fichier.

/03

Archivage à long terme

Sortie PDF/A (niveaux 2 et 3) pour les documents qui doivent rester lisibles pendant des décennies, avec protection par mot de passe et compression en option.

/04

Automatisation et IA

Chaque document peut aussi être restitué en JSON structuré (texte, styles, tableaux, mise en page), prêt pour l’indexation, l’extraction de données ou les modèles de langage.

/05

Génération de documents

Écrire des documents Word à partir de JSON et des classeurs Excel ou OpenDocument à partir de vos données, puis les imprimer en PDF dans la même étape.

/06

Aperçus dans votre application

Images de pages et PDF des fichiers déposés, pour portails, systèmes de tickets et visionneuses, sur le serveur ou dans le navigateur.

Formats

Word, Excel et PowerPoint de 97 à aujourd’hui, OpenDocument, Visio et Publisher.

WordToutes licences
.docx .docm .dotx .rtf
ExcelToutes licences
.xlsx .xlsm .xlsb
PowerPointToutes licences
.pptx .pptm
OpenDocumentToutes licences
.odt .ods .odp .odg, XML plat
Office 97–2003Business
.doc .xls .ppt
VisioBusiness
.vsdx .vsd .vdx, gabarits, modèles
PublisherBusiness
.pub, depuis Publisher 98
AutresToutes licences
.svg, fichiers Office protégés par mot de passe

Comparer avec l’impression

Exemples →
Dessin Visio imprimé par Visio (à gauche) et converti par officepress (à droite).
Dessin Visio imprimé par Visio (à gauche) et converti par officepress (à droite).
Affiche Publisher imprimée par Publisher (à gauche) et convertie par officepress (à droite).
Affiche Publisher imprimée par Publisher (à gauche) et convertie par officepress (à droite).

En détail

Ce qui est rendu
  • Documents texte : styles, listes, tableaux (cellules fusionnées et imbriquées, lignes d’en-tête répétées), sections avec leur propre format de page et leurs propres en-têtes, notes de bas de page et notes de fin, colonnes, taquets de tabulation, champs (table des matières avec numéros de page, PAGE, REF, SEQ, DATE), équations, commentaires et modifications suivies sur demande, liens hypertexte et signets PDF.
  • Tableurs : formats de nombre et de date, mise en forme conditionnelle (échelles de couleurs, barres de données, jeux d’icônes), graphiques et images à leur ancrage, zones d’impression, ajustement à la page, titres répétés, sauts de page, en-têtes et pieds de page. Les formules ne sont pas recalculées : ce sont les valeurs enregistrées dans le fichier qui sont imprimées.
  • Présentations : masques et dispositions, couleurs du thème, dégradés, images, tableaux, graphiques, SmartArt d’après le dessin enregistré dans le fichier, notes de l’orateur et diapositives masquées sur demande.
  • Visio : héritage des formes de base et des thèmes, géométrie (arcs, splines, NURBS), connecteurs avec pointes de flèche, motifs de remplissage et dégradés, dessins à l’échelle, plusieurs pages.
  • Publisher : cadres de texte et articles liés, pages maîtres, images, formes, tableaux, césure en huit langues.
  • Polices : les polices installées sur le serveur sont associées par leur nom. Lorsque Arial, Times New Roman, Courier New ou Calibri manquent, des polices fournies à métrique compatible conservent les retours à la ligne. Les polices Noto fournies couvrent le grec, le cyrillique, l’hébreu, l’arabe, le devanagari, le thaï, le chinois, le japonais et le coréen.
  • Sortie PDF : PDF 1.4 ; PDF/A-2b, 2u, 2a, 3b, 3u et 3a, vérifiés avec veraPDF 1.30.2 ; PDF balisé ; PDF/UA-1 pour les fichiers Word. La même entrée donne le même PDF, octet pour octet.
Sécurité
  • À l’exécution, la bibliothèque n’utilise que des modules intégrés à Node.js : zlib, fs, crypto, path, os, url et worker_threads. Aucun paquet npm n’est installé avec elle.
  • Pas d’accès réseau, pas de processus enfants, pas de eval ni de new Function, pas de modules natifs.
  • Pas d’appels externes : la bibliothèque ne contacte ni ToupieSoft ni personne d’autre.
  • Les macros ne sont jamais exécutées. Les fichiers contenant des macros sont convertis sans elles.
  • Une entrée corrompue ou non prise en charge lève une erreur typée. Pour un fichier d’ancien format endommagé, seul le texte est repris.
  • convertToPdfAsync s’exécute dans un worker thread et accepte une limite de temps (timeoutMs).
Performances

Mesuré le 14 octobre 2026 avec officepress c98a0ac : chaque document converti trois fois dans un même processus Node.js ; la médiane des passages 2 et 3 est indiquée. Ordinateur portable AMD Ryzen 9 5900HS (8 cœurs), 32 Go de RAM, Windows 10, Node.js 24.15. Une conversion utilise un cœur.

DocumentsMédiane par page95 % des fichiers en moins de
Word, RTF, texte OpenDocument34 ms1,5 s
Tableurs25 ms0,85 s
Présentations31 ms1,7 s
Visio36 ms0,36 s
Publisher22 ms5,4 s
Total31 ms1,7 s

Les gros fichiers demandent du temps et de la mémoire : un fichier Publisher de 102 Mo prend 5,5 s et ajoute 670 Mo à la mémoire du processus. Sur un serveur, exécutez les conversions dans un pool de worker threads et limitez la taille des fichiers chargés.

Contrôle de la fidélité

Chaque version est comparée page par page avec le PDF imprimé par l’application qui a créé le document : Word, Excel, PowerPoint et Publisher 2021, Visio 2019, LibreOffice pour OpenDocument. Chaque différence constatée est consignée avec le fichier, la page et une image, et une correction n’est validée que lorsque le document lui-même s’imprime correctement.

Les exemples proviennent de ce banc d’essai. Téléchargez le fichier source et les deux PDF, et comparez.

Limites
  • Les formules ne sont pas recalculées.
  • La sortie PDF n’est ni chiffrée ni signée.
  • Les déformations WordArt et les effets 3D ne sont rendus qu’en partie.
  • Les écritures autres que latine, grecque, cyrillique, hébraïque, arabe, devanagari, thaï et CJK sont dessinées sans mise en forme complète des glyphes.
  • Lorsqu’une police manque sur le serveur, les retours à la ligne peuvent différer légèrement de ceux d’Office.

La liste complète figure dans la documentation.

Intégration
import { convertToPdf } from '@toupiesoft/officepress';

app.get('/documents/:id/preview.pdf', async (req, res) => {
  const file = await storage.read(req.params.id);       // votre stockage
  res.type('application/pdf').send(convertToPdf(file));  // dans le processus, hors ligne
});
  • Dans le processus : convertToPdf est synchrone ; adapté aux scripts, aux traitements par lots et aux faibles volumes.
  • Pool de workers : pour un service d’aperçu, un pool fixe de worker_threads derrière une file d’attente, dimensionné au nombre de cœurs moins un. Voir Aperçus de documents.

Essayez-la sur vos propres fichiers

Une licence d’essai de 30 jours : la bibliothèque complète dans votre propre application.