Génération de PDF en JavaScript : la 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 JavaScript puissante et légère pour créer et modifier des documents PDF côté serveur (Node.js) et dans le navigateur. Contrairement aux solutions lourdes comme Puppeteer, pdf-lib ne nécessite pas l'installation d'un navigateur ou de dépendances externes. Elle fonctionne directement avec la spécification PDF, ce qui en fait un choix idéal pour générer des documents simples et de complexité moyenne : rapports, factures, certificats, questionnaires et contrats.

Installation

Pour installer dans un projet Node.js, exécutez la commande :

npm install pdf-lib

La bibliothèque n'a pas de dépendances natives et est compatible avec Node.js 10+.

Fonctionnalités principales

  • Création de PDF à partir de zéro (pages vides, texte, images, incorporation de polices).
  • Modification de PDF existants (extraction de pages, insertion, suppression, rotation).
  • Travail avec des formulaires (remplissage de champs, création de cases à cocher et de boutons radio).
  • Prise en charge d'Unicode et de polices personnalisées (TTF, OTF).
  • Ajout de métadonnées (auteur, titre, date).
  • Export vers ArrayBuffer, Uint8Array ou Blob.

Exemple de code en JavaScript (Node.js)

Ci-dessous un exemple simple de création d'un PDF avec du texte 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]); // Ajout de texte page.drawText('Привет, мир!', { x: 50, y: 350, size: 30, color: rgb(0, 0.53, 0.71), }); // Incorporation d'une police (optionnelle) const fontBytes = fs.readFileSync('./fonts/roboto.ttf'); const font = await doc.embedFont(fontBytes); page.drawText('Кастомный шрифт', { x: 50, y: 300, size: 20, font: font, }); // Sauvegarde const pdfBytes = await doc.save(); fs.writeFileSync('output.pdf', pdfBytes); console.log('PDF créé !');}

createPDF().catch(console.error);

Ce code crée un document avec deux lignes, dont une utilise une police intégrée. Pour travailler avec des images, utilisez doc.embedPng() ou doc.embedJpg().

Quand utiliser pdf-lib

  • Vous devez générer rapidement un PDF sans lancer de navigateur.
  • Le document ne contient pas de mise en page complexe (tableaux, colonnes) — pour cela, les moteurs de templates comme Puppeteer sont plus adaptés.
  • Vous avez besoin d'une bibliothèque légère avec une taille minimale (~500 KB).
  • Vous travaillez avec des formulaires ou modifiez des PDF existants.

Conclusion

pdf-lib est un excellent choix pour les projets nécessitant la génération de PDF sur Node.js sans dépendances superflues. Elle est simple à apprendre, bien documentée et prend en charge toutes les opérations de base. Pour des mises en page complexes, envisagez Puppeteer ou jsPDF, mais pour 80 % des tâches, pdf-lib sera plus que suffisant.

Recommendations