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-libEnsuite, 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).
Aussi dans la bibliothèque
Traitement d'images en PHP : resize, crop (recadrage et redimensionnement)
Flurl pour C# (.NET) : guide complet avec exemples
Apprentissage automatique en PHP : aperçu des bibliothèques pour le ML
Rate Limiting en Swift : gestion de la fréquence des requêtes dans iOS/macOS