PDFKit JavaScript (Node.js) : guide complet avec exemples

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

Introduction à PDFKit

PDFKit est une bibliothèque puissante et flexible pour générer des documents PDF côté serveur avec JavaScript (Node.js). Elle offre aux développeurs un contrôle total sur le processus de création de PDF : des simples documents texte aux rapports complexes de plusieurs pages avec tableaux, images, graphiques et éléments interactifs. PDFKit ne nécessite aucune dépendance supplémentaire comme PhantomJS ou Puppeteer, et fonctionne exclusivement en JavaScript pur, ce qui en fait un choix idéal pour les applications serveur à forte charge.

Pourquoi utiliser cette bibliothèque ? Dans le développement web moderne, il est souvent nécessaire de générer des documents PDF par programmation : factures, bons de livraison, rapports, certificats, contrats. PDFKit résout ce problème de manière élégante et efficace. Contrairement aux convertisseurs HTML vers PDF, qui peuvent être lents et imprévisibles, PDFKit vous donne un accès direct au modèle PDF : vous définissez vous-même les coordonnées de chaque élément, gérez les polices, les couleurs et la mise en page. C'est particulièrement important lorsque vous avez besoin d'un positionnement précis des éléments ou de travailler avec des formats non standard.

La bibliothèque est activement maintenue par la communauté, dispose d'une documentation complète et est utilisée en production par des milliers d'entreprises dans le monde entier. PDFKit prend en charge toutes les fonctionnalités principales du format PDF : intégration de polices (y compris les caractères accentués), gestion des images (JPEG, PNG, SVG), création d'annotations, de liens hypertextes, de signets, ainsi que le chiffrement des documents. Grâce à son architecture modulaire et à la possibilité d'écriture en flux, PDFKit convient parfaitement à la création de petits documents comme de fichiers PDF de plusieurs gigaoctets.

Installation de PDFKit

PDFKit est distribué via le gestionnaire de paquets npm. L'installation se fait avec la commande standard :

npm install pdfkit

Pour travailler avec TypeScript, l'installation de types supplémentaires peut être nécessaire :

npm install pdfkit @types/pdfkit

Si vous utilisez Yarn :

yarn add pdfkit

Une fois installée, la bibliothèque est prête à l'emploi. Aucune dépendance supplémentaire ni exigence système n'est nécessaire — tout fonctionne "prêt à l'emploi" sur toute plateforme prenant en charge Node.js (Windows, macOS, Linux).

Démarrage rapide : exemple minimal fonctionnel

Créez un fichier hello-pdf.js et ajoutez le code suivant :

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

// Crée un nouveau document PDF
const doc = new PDFDocument();

// Spécifie où enregistrer le résultat
doc.pipe(fs.createWriteStream('hello.pdf'));

// Ajoute du texte
doc.fontSize(25)
   .text('Bonjour le monde !', 100, 100);

// Finalise le document
doc.end();

console.log('PDF créé : hello.pdf');

Exécutez le script :

node hello-pdf.js

Un fichier hello.pdf apparaîtra dans le répertoire courant avec le texte "Bonjour le monde !". Cet exemple illustre le principe de base de PDFKit : création du document, ajout de contenu et sauvegarde du résultat.

Méthodes et classes principales de PDFKit

PDFKit offre une API riche pour travailler avec les documents PDF. Voici les méthodes essentielles pour le développement quotidien.

1. new PDFDocument(options) — Constructeur du document

Signature : new PDFDocument([options])

Description : Crée une nouvelle instance de document PDF. Le paramètre options est un objet permettant de définir la taille de la page, les marges, l'orientation, les métadonnées et d'autres paramètres.

const doc = new PDFDocument({
  size: 'A4',              // Taille de la page (A4, Letter, Legal, etc.)
  layout: 'portrait',      // Orientation : 'portrait' ou 'landscape'
  margins: {               // Marges                    

Recommendations