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

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) : aperçu des bibliothèques et outils



La création de documents PDF est l'une des tâches courantes en développement web. Qu'il s'agisse de générer des factures, des rapports, des certificats ou simplement d'exporter des données, Node.js propose plusieurs solutions puissantes. Dans cet article, nous examinerons les principales bibliothèques pour travailler avec des PDF côté serveur en JavaScript, leurs fonctionnalités et des exemples d'utilisation.



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

La génération de PDF sur le serveur (en Node.js) présente plusieurs avantages :

  • Uniformité — le document a le même aspect sur tous les appareils
  • Sécurité — les données ne quittent pas le serveur
  • Automatisation — possibilité de créer des PDF selon un planning ou lors d'événements spécifiques
  • Prise en charge de logique complexe — accès aux bases de données, au système de fichiers et à d'autres ressources


Bibliothèques principales pour la génération de PDF en Node.js



1. PDFKit

PDFKit est la bibliothèque la plus populaire pour créer des PDF "à partir de zéro". Elle ne nécessite aucune dépendance externe et permet un contrôle total du contenu du document.

Exemple d'utilisation :

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

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

// Ajout de contenudoc.fontSize(25).text('Bonjour le monde !', 100, 100);doc.fontSize(12).text('Ceci est un PDF créé avec PDFKit.', 100, 150);

// Dessiner une lignedoc.moveTo(100, 200).lineTo(500, 200).stroke();

// Finaliser le documentdoc.end();

Fonctionnalités :

  • Ajout de texte avec différentes polices et tailles
  • Insertion d'images (JPEG, PNG)
  • Dessin de lignes, rectangles et cercles
  • Prise en charge des liens et des signets
  • Création de documents multipages


2. Puppeteer

Puppeteer est un outil de contrôle du navigateur Chrome/Chromium. Il permet de générer des PDF à partir de pages HTML, ce qui est pratique pour les mises en page complexes.

Exemple d'utilisation :

const puppeteer = require('puppeteer');

async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage();

await page.setContent('<h1>Titre</h1><p>Texte du document</p>'); await page.pdf({ path: 'page.pdf', format: 'A4' });

await browser.close();}

generatePDF();

Caractéristiques :

  • Prise en charge de CSS, JavaScript et de toutes les technologies web modernes
  • Idéal pour convertir des modèles HTML en PDF
  • Possibilité d'impression avec des paramètres définis (format, marges, échelle)
  • Nécessite l'installation de Chromium (~300 Mo)


3. jsPDF (avec adaptation pour Node.js)

jsPDF est une bibliothèque côté client, mais il existe des wrappers pour une utilisation en Node.js (par exemple, jspdf-autotable).

Exemple (avec jspdf et html2canvas) :

const { jsPDF } = require('jspdf');const fs = require('fs');

const doc = new jsPDF();doc.text('Bonjour depuis Node.js !', 10, 10);doc.save('output.pdf');

Limitations : jsPDF ne prend pas en charge les mises en page complexes et nécessite des bibliothèques supplémentaires pour fonctionner avec HTML.



4. pdfmake

pdfmake est une bibliothèque basée sur une description déclarative du document au format JSON.

Exemple :

const pdfmake = require('pdfmake');const fs = require('fs');

const fonts = { Roboto: { normal: 'fonts/Roboto-Regular.ttf', bold: 'fonts/Roboto-Medium.ttf' }};

const printer = new pdfmake(fonts);

const docDefinition = { content: [ { text:

Recommendations