Génération de rapports PDF en TypeScript : aperçu des bibliothèques et exemples pratiques
La génération de documents PDF est l'une des tâches clés dans le développement d'applications web modernes et de systèmes d'entreprise. Rapports, factures, certificats, tableaux de bord analytiques — tout cela nécessite un outil pratique et flexible pour créer des PDF côté serveur ou client. TypeScript, en tant que surcouche fortement typée de JavaScript, offre d'excellentes possibilités pour implémenter cette fonctionnalité. Dans cet article, nous examinerons les principales bibliothèques pour la génération de PDF en TypeScript, leurs caractéristiques, avantages et exemples d'utilisation.
Pourquoi utiliser TypeScript pour la génération de PDF ?
TypeScript ajoute un typage statique, ce qui simplifie considérablement le développement de systèmes complexes de génération de rapports. L'IDE fournit l'autocomplétion, la vérification des types et le refactoring, ce qui réduit le nombre d'erreurs. De plus, le code TypeScript est facile à maintenir et à faire évoluer, en particulier dans les grands projets.
Principales bibliothèques pour la génération de PDF en TypeScript
Examinons trois outils les plus populaires : PDFKit, jsPDF et Puppeteer. Chacun a son créneau et ses caractéristiques.
1. PDFKit
PDFKit est une bibliothèque puissante pour créer des documents PDF sur Node.js. Elle est entièrement écrite en JavaScript et prend en charge TypeScript via des définitions de types (@types/pdfkit). PDFKit permet de créer des documents à partir de zéro, d'ajouter du texte, des images, des graphiques vectoriels, des tableaux et bien plus encore.
Avantages :
- Contrôle total sur le contenu et la structure du PDF.
- Prise en charge des polices, couleurs, transparence.
- Prise en charge intégrée du cyrillique (lors de l'ajout de polices).
- Haute performance.
Exemple d'utilisation de PDFKit avec TypeScript :
import PDFDocument from 'pdfkit';import * as fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('report.pdf'));
doc.fontSize(25).text('Rapport de ventes', 100, 100);doc.fontSize(12).text('Date : 2025-03-15', 100, 150);doc.moveDown();
doc.text('Nom : Ordinateur portable');doc.text('Quantité : 10');doc.text('Montant : 1 200 000 RUB');
doc.end();Pour un fonctionnement correct avec le cyrillique, il est nécessaire d'ajouter une police, par exemple :
doc.registerFont('Roboto', 'fonts/Roboto-Regular.ttf');doc.font('Roboto').text('Bonjour le monde !');2. jsPDF
jsPDF est une bibliothèque côté client pour générer des PDF directement dans le navigateur. Elle dispose également de types pour TypeScript. jsPDF est parfait pour créer des rapports simples, des factures et des bordereaux sans traitement serveur.
Avantages :
- Fonctionne côté client (pas besoin de serveur).
- Configuration et utilisation simples.
- Prise en charge de la mise en page HTML via le plugin
html2canvas.
Exemple d'utilisation de jsPDF avec TypeScript :
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.setFontSize(18);doc.text('Rapport de projet', 10, 20);doc.setFontSize(12);doc.text('Avancement : 75%', 10, 40);doc.text('Budget : 2 500 000 RUB', 10, 50);
doc.save('project-report.pdf');Important : jsPDF ne prend pas en charge le cyrillique "prêt à l'emploi". Pour travailler avec du texte russe, vous devez charger des polices via addFileToVFS et addFont.
3. Puppeteer
Puppeteer est une bibliothèque pour contrôler le navigateur Chrome/Chromium via le protocole DevTools. Elle permet de générer des PDF à partir de HTML/CSS avec une précision maximale, car elle utilise le rendu réel du navigateur. Puppeteer dispose de types TypeScript officiels.
Avantages :
- Prise en charge complète de CSS, Flexbox, Grid, cyrillique.
Aussi dans la bibliothèque
Parsing HTML en Go : aperçu des bibliothèques et exemples de code
Apprentissage automatique en Java : aperçu des principales bibliothèques de développement
Client OAuth pour Node.js : implémentation de l'authentification via Google et GitHub
Rate Limiting en Go : guide de limitation du débit des requêtes