Génération de PDF en JavaScript : bibliothèque pdf-lib

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 pdf-lib et pourquoi en avez-vous besoin ?

pdf-lib est une bibliothèque puissante et légère pour créer et éditer des documents PDF en JavaScript (Node.js et navigateur). Contrairement aux solutions lourdes comme Puppeteer ou jsPDF, pdf-lib ne nécessite pas l'installation d'un environnement de navigateur (Chromium) et fonctionne exclusivement avec les structures PDF natives. Elle est idéale pour la génération côté serveur de rapports, factures, certificats et tout autre document nécessitant un contrôle total du contenu : texte, polices (y compris l'incorporation), images, formulaires, annotations et pages.

Installation

L'installation via npm est simple :

npm install pdf-lib

Ensuite, importez-la dans votre projet :

const { PDFDocument, rgb, StandardFonts } = require('pdf-lib');

Fonctionnalités principales

  • Création de PDF à partir de zéro — ajout de pages, texte, images.
  • Édition de PDF existants — copie de pages, insertion de texte par-dessus, fusion de documents.
  • Travail avec les polices — prise en charge des polices standard (Helvetica, TimesRoman) et incorporation de polices TTF personnalisées.
  • Dessin de formes — lignes, rectangles, ellipses avec réglage de la couleur et de la transparence.
  • Formulaires et annotations — création de champs de texte, boutons, liens.
  • Export en Uint8Array — le résultat peut être enregistré dans un fichier ou envoyé au client.

Exemple de code sur Node.js

Créons un PDF simple avec un titre et une image :

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

async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage([600, 400]); // Texte page.drawText('Привет, мир!', { x: 50, y: 350, size: 30, color: rgb(0, 0.53, 0.71), }); // Rectangle page.drawRectangle({ x: 50, y: 200, width: 200, height: 100, color: rgb(0.9, 0.1, 0.1), borderColor: rgb(0, 0, 0), borderWidth: 2, }); // Incorporation d'une image (PNG) const imageBytes = fs.readFileSync('logo.png'); const image = await doc.embedPng(imageBytes); page.drawImage(image, { x: 300, y: 250, width: 100, height: 100, }); const pdfBytes = await doc.save(); fs.writeFileSync('output.pdf', pdfBytes);}

createPDF().catch(console.error);

Quand utiliser pdf-lib ?

pdf-lib est le meilleur choix si vous travaillez dans un environnement Node.js (ou navigateur) et que vous avez besoin de :
- Générer rapidement des PDF sans lancer de navigateur (économie de mémoire et de temps).
- Incorporer des polices personnalisées (par exemple, pour le cyrillique).
- Éditer des PDF prêts à l'emploi (ajouter des filigranes, fusionner des documents).
- Créer des formulaires interactifs.

Évitez pdf-lib si vous avez besoin d'un rendu HTML/CSS complexe en PDF (dans ce cas, Puppeteer est plus adapté) ou de travailler avec de grands volumes de données (les PDF lourds peuvent ralentir le travail).

Recommendations