Génération de PDF en JavaScript : la bibliothèque PDFKit

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que PDFKit ?

PDFKit est une bibliothèque puissante pour générer des documents PDF en JavaScript (Node.js). Elle permet de créer des fichiers PDF complexes multipages avec du texte, des images, des tableaux, des graphiques vectoriels et des annotations. PDFKit implémente entièrement la spécification PDF 1.7 et ne nécessite aucune dépendance externe, ce qui en fait un choix idéal pour les applications serveur Node.js.

Pourquoi la génération de PDF en JavaScript ?

La génération de PDF côté serveur est utilisée dans divers scénarios : création de factures et de reçus, génération de rapports, production de certificats, exportation de données au format portable. PDFKit permet d'automatiser ces processus en fonctionnant entièrement dans l'environnement Node.js sans navigateur. Vous pouvez créer dynamiquement des documents, insérer des données depuis une base de données, ajouter des filigranes et des signatures.

Installation de PDFKit

L'installation de la bibliothèque est simple et s'effectue via npm :

npm install pdfkit

Il est également recommandé d'installer pdfkit-table pour une gestion facile des tableaux ou svg-to-pdfkit pour l'insertion de graphiques SVG.

Fonctionnalités principales de PDFKit

  • Texte et polices : prise en charge d'Unicode, incorporation de polices, alignement, retour à la ligne, crénage.
  • Graphiques vectoriels : lignes, rectangles, cercles, courbes de Bézier, dégradés.
  • Images : insertion de JPEG, PNG, SVG (via un plugin).
  • Tableaux : création de tableaux avec largeur automatique des colonnes, styles et en-têtes.
  • Annotations : liens, signets, métadonnées (auteur, sujet), filigranes.
  • Pages : ajout, configuration de la taille, de l'orientation, des marges, numérotation.

Exemple de code en JavaScript (Node.js)

const PDFDocument = require('pdfkit');const fs = require('fs');

// Créons un documentconst doc = new PDFDocument();

// Sauvegardons dans un fichierconst stream = fs.createWriteStream('output.pdf');doc.pipe(stream);

// Ajoutons un titredoc.fontSize(25).text('Bonjour, le monde !', 100, 100);

// Ajoutons du texte avec retour à la lignedoc.fontSize(12).text('Ceci est un exemple de PDF créé avec PDFKit.', 100, 150);

// Dessinons une lignedoc.moveTo(100, 200).lineTo(400, 200).stroke();

// Insérons une image (si disponible)// doc.image('path/to/image.png', 100, 250, {width: 200});

// Nouvelle pagedoc.addPage();doc.fontSize(20).text('Page 2');

// Ajoutons un tableau (via pdfkit-table)// doc.table({ headers: ['Nom', 'Âge'], rows: [['Anne', 25], ['Jean', 30]] });

// Finalisons le documentdoc.end();

stream.on('finish', () => { console.log('PDF créé avec succès');});

Quand utiliser PDFKit ?

PDFKit convient aux tâches nécessitant un contrôle total sur le contenu du PDF : des documents texte simples aux rapports complexes avec graphiques, tableaux et filigranes. Il est plus rapide et plus léger que Puppeteer si la mise en page HTML n'est pas nécessaire. Utilisez PDFKit si vous créez des documents sur un serveur Node.js et souhaitez éviter de lancer un navigateur. Pour les tâches simples nécessitant une conversion HTML en PDF, Puppeteer est plus adapté.

Recommendations