Génération de PDF en TypeScript : guide complet pour les développeurs
La création de documents PDF est l'une des tâches les plus demandées dans le développement web moderne. En langage TypeScript, il existe plusieurs bibliothèques puissantes qui permettent de générer des PDF aussi bien côté client que côté serveur (Node.js). Dans cet article, nous examinerons trois outils principaux : PDFKit, jsPDF et pdf-lib, et nous montrerons des exemples pratiques de leur utilisation.
Pourquoi générer des PDF en TypeScript ?
TypeScript ajoute un typage statique, ce qui est particulièrement important lors du travail avec des documents de structure complexe. L'utilisation de TypeScript pour la génération de PDF permet de :
- Éviter les erreurs de type lors de la création de tableaux et de styles
- Simplifier le refactoring de grands projets
- Intégrer la génération de PDF avec des projets TypeScript existants (React, Angular, Node.js)
Aperçu des bibliothèques pour la génération de PDF
1. PDFKit (Node.js)
PDFKit est la bibliothèque la plus populaire pour créer des PDF côté serveur. Elle offre un accès de bas niveau aux objets PDF, prend en charge les polices, les images, l'incorporation de graphiques vectoriels et le cyrillique (avec l'ajout de polices appropriées).
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(24).text('Bonjour le monde !', 100, 100);doc.fontSize(12).text('Ceci est un PDF créé avec PDFKit et TypeScript', 100, 150);doc.end();Caractéristiques :
- Fonctionne uniquement dans Node.js (ne convient pas au navigateur)
- Nécessite une configuration manuelle des polices pour le cyrillique
- Prend en charge les mises en page complexes, les tableaux et les graphiques
2. jsPDF (navigateur et Node.js)
jsPDF est une bibliothèque universelle fonctionnant à la fois dans le navigateur et sur le serveur. Elle est plus simple à apprendre, mais présente des limitations en termes de complexité des mises en page.
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('Génération de PDF en TypeScript', 10, 10);doc.save('document.pdf');Caractéristiques :
- API simple pour les documents de base
- Prise en charge du cyrillique (nécessite l'ajout de polices via addFont)
- Peut fonctionner avec canvas et les éléments HTML
3. pdf-lib (moderne et flexible)
pdf-lib est une bibliothèque légère avec un excellent support de TypeScript. Elle permet de créer des PDF à partir de zéro ou de modifier des documents existants.
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage(); const font = await doc.embedFont(StandardFonts.Helvetica);
page.drawText('PDF avec pdf-lib', { x: 50, y: 700, size: 24, font, color: rgb(0, 0, 0), });
const pdfBytes = await doc.save(); // Sauvegarde ou envoi}Caractéristiques :
- Prise en charge complète de TypeScript (types inclus)
- Peut fonctionner dans le navigateur et Node.js
- Permet de modifier des PDF existants
- Nécessite un travail manuel avec les polices pour le cyrillique
Comparaison des bibliothèques
| Caractéristique | PDFKit | jsPDF | pdf-lib |
|---|---|---|---|
| Environnement d'exécution | Node.js | Navigateur + Node.js | Navigateur + Node.js |
| Prise en charge de TypeScript | Partielle (via @types) | Partielle | Complète |
| Cyrillique | Nécessite des polices | Nécessite des polices | Nécessite des polices |
| Mises en page complexes | Excellent |