Génération de PDF en JavaScript (Node.js) : bibliothèques et outils pour créer des PDF

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

Génération de PDF en JavaScript (Node.js) : guide complet des bibliothèques et outils



La génération de documents PDF est l'une des tâches les plus demandées dans le développement web. De la création de factures et de rapports à la réalisation de documents complexes de plusieurs pages, Node.js offre des outils puissants pour travailler avec les PDF. Dans cet article, nous examinerons les principales bibliothèques et approches pour créer des fichiers PDF côté serveur en JavaScript.



Pourquoi générer des PDF sur le serveur ?

La génération de PDF côté serveur permet de :

  • Créer des documents dynamiquement à partir de données issues de la base
  • Assurer une cohérence de formatage
  • Traiter de grands volumes de données sans solliciter le client
  • S'intégrer aux systèmes de reporting existants


Principales bibliothèques pour la génération de PDF en Node.js



1. pdfkit — la solution classique

pdfkit est l'une des bibliothèques les plus populaires pour créer des PDF à partir de zéro. Elle offre un contrôle total sur le contenu du document : texte, images, tableaux, graphiques vectoriels.



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

const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));

// Ajout de textedoc.fontSize(25).text('Bonjour le monde !', 100, 100);

// Dessin d'une lignedoc.moveTo(100, 150).lineTo(400, 150).stroke();

// Insertion d'une imagedoc.image('logo.png', 100, 200, { width: 100 });

doc.end();


Avantages : léger, rapide, prend en charge Unicode et le cyrillique, nombreuses polices.

Inconvénients : nécessite une configuration manuelle de la mise en page, pas de support HTML intégré.



2. Puppeteer — génération à partir de HTML

Puppeteer est une bibliothèque pour contrôler un navigateur Chrome headless. Elle permet de convertir des pages HTML en PDF en conservant tous les styles et scripts.



const puppeteer = require('puppeteer');

async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setContent('<h1 style="color: red;">Titre du PDF</h1><p>Texte du document</p>'); await page.pdf({ path: 'output.pdf', format: 'A4', margin: { top: '20px', bottom: '20px' } }); await browser.close();}

generatePDF();


Avantages : idéal pour les mises en page HTML complexes, prend en charge CSS, JavaScript, polices.

Inconvénients : lourd (nécessite Chromium), plus lent que les autres bibliothèques.



3. pdf-lib — modification de PDF existants

pdf-lib est spécialisée dans l'édition de documents PDF existants. Elle permet d'ajouter du texte, des images, de remplir des formulaires.



const { PDFDocument } = require('pdf-lib');const fs = require('fs');

async function editPDF() { const existingPdfBytes = fs.readFileSync('template.pdf'); const pdfDoc = await PDFDocument.load(existingPdfBytes); const pages = pdfDoc.getPages(); const firstPage = pages[0]; firstPage.drawText('Nouveau texte', { x: 50, y: 50, size: 20, color: rgb(0, 0, 0) }); const pdfBytes = await pdfDoc.save(); fs.writeFileSync('modified.pdf', pdfBytes);}

editPDF();


Avantages : léger, ne nécessite pas de dépendances externes, fonctionne très bien avec les formulaires.

Inconvénients : capacités limitées pour créer des mises en page complexes à partir de zéro.



4. jsPDF — solution client-serveur

jsPDF a été initialement créée pour le navigateur, mais fonctionne également dans Node.js. Convient aux documents simples.



const { jsPDF } = require("jspdf");

const doc = new jsPDF();doc.text("Hello world!", 10, 10);doc.save("output.pdf");


Avantages : API simple, fonctionne côté client et serveur.

Inconvénients :

Recommendations