Génération de PDF en TypeScript : aperçu des outils
La génération de documents PDF est l'une des tâches courantes en développement web. Grâce à TypeScript et à des bibliothèques puissantes, vous pouvez créer des rapports complexes, des factures, des certificats et d'autres documents directement dans le navigateur ou sur le serveur (Node.js). Dans cet article, nous examinerons les principales bibliothèques pour travailler avec des PDF en TypeScript, leurs caractéristiques et des exemples d'utilisation.
1. jsPDF — une bibliothèque légère et populaire
jsPDF est l'une des bibliothèques les plus courantes pour créer des PDF côté client. Elle permet de générer des documents directement dans le navigateur en utilisant uniquement JavaScript/TypeScript. La bibliothèque prend en charge le texte, les images, les tableaux et le formatage de base.
Installation
npm install jspdf @types/jspdfExemple : création d'un PDF simple
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('Bonjour le monde !', 10, 10);doc.save('document.pdf');Avantages et inconvénients
- ✅ Facilité d'utilisation
- ✅ Fonctionne dans le navigateur et Node.js (avec des modules supplémentaires)
- ❌ Prise en charge limitée des mises en page complexes
- ❌ Difficile de travailler avec des tableaux (nécessite une configuration manuelle)
2. PDFKit — un outil puissant pour la génération côté serveur
PDFKit est une bibliothèque pour Node.js qui offre un contrôle total sur la création de PDF. Elle est idéale pour la génération côté serveur de documents complexes : rapports, factures, brochures. Elle prend en charge les polices, les dégradés, les graphiques vectoriels et les documents multipages.
Installation
npm install pdfkit @types/pdfkitExemple : création d'un PDF avec texte et image
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Titre', 100, 100);doc.image('path/to/image.png', 100, 150, { width: 200 });doc.end();Avantages et inconvénients
- ✅ Flexibilité et contrôle total
- ✅ Prise en charge des graphiques complexes
- ❌ Ne fonctionne pas dans le navigateur (uniquement Node.js)
- ❌ API plus complexe par rapport à jsPDF
3. Puppeteer — génération de PDF à partir de HTML
Puppeteer est une bibliothèque pour contrôler un navigateur Chrome sans tête. Elle permet de convertir des pages HTML en PDF, ce qui est pratique si vous avez déjà la mise en page d'un document (par exemple, une facture ou un rapport). Elle convient aussi bien pour la génération côté client que côté serveur.
Installation
npm install puppeteerExemple : génération d'un PDF à partir de HTML
import puppeteer from 'puppeteer';
async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setContent('<h1>Bonjour, PDF !</h1><p>Ceci est un rapport.</p>'); await page.pdf({ path: 'report.pdf', format: 'A4' }); await browser.close();}
generatePDF();Avantages et inconvénients
- ✅ Utilisation complète de CSS et HTML
- ✅ Prise en charge des mises en page et styles complexes
- ❌ Nécessite l'installation de Chrome (taille importante)
- ❌ Plus lent que les bibliothèques spécialisées
4. pdfmake — génération basée sur une structure JSON
pdfmake est une bibliothèque qui utilise une approche déclarative : vous décrivez la structure du document en JSON, et la bibliothèque construit elle-même le PDF. Idéale pour créer des tableaux, des listes et des rapports.
Installation
npm install pdfmake @types/pdfmakeExemple : création d'un PDF avec un tableau
import pdfMake from 'pdfmake/build/pdfmake';import pdfFonts from 'pdfmake/build/vfs_fonts';
pdfMake.vfs = pdfFonts.pdfMake.vfs;
const docDefinition = { content: [ { text: 'Rapport' Aussi dans la bibliothèque
Surveillance des applications TypeScript : outils et pratiques
Configuration d'applications en Rust : bibliothèques config et dotenv
Autorisation et authentification en C# (.NET) : guide complet