Un PDF de fond et des champs variables décrits en JSON
pdfme est une bibliothèque TypeScript qui remplit un gabarit PDF avec des données, dans Node.js comme dans le navigateur. Le template a deux parties : basePdf, le fond fixe (un PDF existant, ou une page vierge définie par sa largeur, sa hauteur et ses marges), et schemas, la liste des champs variables avec leur type, leur position et leur taille. La fonction generate reçoit ce template et un tableau de données dont chaque élément correspond à une page, si bien que plusieurs éléments donnent un PDF multipage.
Designer embarquable, tableaux paginés et codes-barres
- Trois classes d'interface :
Designerpour placer les champs à la souris,Formpour faire saisir les valeurs,Viewerpour un aperçu en lecture seule. Chacune se monte dans un élément du DOM, et le paquet@pdfme/uiembarque React, qu'il n'y a pas à installer à côté. L'interface existe en treize langues, dont le français. - Types de champs : texte avec Markdown en ligne et taille de police ajustée à la boîte, tableaux et listes qui passent à la page suivante, images JPEG, PNG ou PDF, SVG, formes, dates, listes déroulantes, cases à cocher, et douze formats de codes-barres dont QR, EAN-13, PDF417 et GS1 DataMatrix. Un type absent s'écrit sous forme de plugin.
- Expressions entre accolades : un champ texte peut reprendre la valeur d'un autre champ (
{field1}) ou afficher un calcul ({1+1}). - PDF à remplir :
generateFormchange les champs texte, cases à cocher et boutons radio modifiables en champs AcroForm, que le destinataire complète dans son lecteur PDF. - JSX et ligne de commande :
@pdfme/jsxdécrit un template en composants JSX, et la CLIpdfmele valide et contrôle polices,basePdfet chemin de sortie avant une génération en CI. - Outils de pages :
@pdfme/manipulatorfusionne, découpe, pivote, insère ou retire des pages ;@pdfme/converterrend des pages PDF en PNG et assemble des images en PDF.
Pagination sur fond vierge seulement, Node 20 depuis la v6
La pagination automatique exige un fond vierge. Le texte qui s'agrandit (overflow: "expand") et les tableaux qui débordent sur la page suivante ne fonctionnent qu'avec un basePdf défini par ses dimensions, tout comme les en-têtes et pieds de page répétés (staticSchema). Sur un PDF existant, les pages restent figées, et le Designer y désactive l'agrandissement du texte.
La v6, sortie le 3 avril 2026, demande Node 20 et des imports ESM. Les paquets ne sont plus publiés qu'en ESM, le code navigateur vise es2020, et le registre de plugins par défaut ne contient plus que le texte : images, tableaux, signatures, codes-barres et cases à cocher s'importent depuis @pdfme/schemas et se passent dans l'option plugins. La page Getting Started indique encore Node 16, alors que le guide de migration v6 et la CLI exigent Node 20.
Le champ signature produit une image. Le tracé dessiné dans le formulaire est exporté en PNG puis posé comme n'importe quelle image, et rien dans le dépôt ne gère la signature par certificat. Sceller le PDF demande un second outil, par exemple @signpdf avec un certificat P12.
Le guide de démarrage vise les applications qui embarquent un éditeur de PDF ou qui produisent des PDF en nombre sans perdre en performance. Le site annonce que la plupart des générations prennent de quelques dizaines à quelques centaines de millisecondes.
Le code est sous MIT, les fonctions sur mesure sont payantes. Le README propose de développer contre rémunération une fonction demandée, qui sera de toute façon publiée en open source.
La 6.2.8, publiée le 21 octobre 2026, est le trentième tag de la branche 6 en six mois et demi. La CLI, la couche JSX et la conversion de Markdown en PDF portent la mention bêta, et la documentation du paquet de conversion le dit encore en développement.
