Génération de rapports PDF en PHP : guide complet pour le développeur
La création de documents PDF est l'une des tâches les plus demandées en développement web. Rapports, factures, certificats, supports pédagogiques — tout cela doit souvent être généré dynamiquement côté serveur. PHP propose plusieurs bibliothèques puissantes qui permettent de créer des PDF de toute complexité. Dans cet article, nous analyserons quatre outils populaires : TCPDF, FPDF, Dompdf et mPDF, et fournirons des exemples pratiques de code.
Pourquoi générer des PDF en PHP ?
Le PDF (Portable Document Format) est un format universel qui s'affiche correctement sur tous les appareils. Dans les projets éducatifs, comme PythonLib, les rapports PDF peuvent être utilisés pour :
- Exporter les résultats de tests et d'examens
- Créer des certificats de fin de cours
- Générer des supports pédagogiques et des résumés
- Élaborer des rapports statistiques pour les enseignants
Aperçu des bibliothèques populaires
1. TCPDF
TCPDF est l'une des bibliothèques les plus puissantes et matures pour travailler avec des PDF en PHP. Elle prend en charge :
- L'ensemble complet des fonctionnalités PDF 1.7
- L'intégration de polices (y compris Unicode et cyrillique)
- Le dessin de graphiques, tableaux, codes QR
- La prise en charge des CSS (limitée)
Exemple d'utilisation de base :
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);$pdf->SetCreator('PythonLib');$pdf->SetAuthor('Développeur');$pdf->SetTitle('Rapport de test');
$pdf->AddPage();$pdf->SetFont('dejavusans', '', 14);$pdf->Cell(0, 10, 'Bonjour le monde ! Ceci est un rapport PDF.', 0, 1, 'C');
$pdf->Output('report.pdf', 'I');2. FPDF
FPDF est une bibliothèque légère et rapide, idéale pour les documents simples. Ses principales caractéristiques :
- Aucune dépendance externe requise
- API simple pour ajouter du texte, des images et des lignes
- Prise en charge de l'UTF-8 via des packages supplémentaires
Exemple de création d'un tableau :
require('fpdf/fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Nom', 1);$pdf->Cell(40, 10, 'Points', 1);$pdf->Ln();$pdf->SetFont('Arial', '', 12);$pdf->Cell(40, 10, 'Ivan', 1);$pdf->Cell(40, 10, '95', 1);$pdf->Output();3. Dompdf
Dompdf permet de convertir du HTML+CSS en PDF. C'est pratique si vous utilisez déjà des moteurs de templates (par exemple, Twig). Fonctionnalités :
- Prise en charge de CSS 2.1 et partiellement CSS3
- Travail avec des images et des polices
- Intégration simple avec des applications web
Exemple avec un template HTML :
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<h2 style="color:blue;">Rapport du cours Python</h2> <p>Étudiant : Alexei, résultat : 87%</p>';$dompdf->loadHtml($html, 'UTF-8');$dompdf->setPaper('A4', 'portrait');$dompdf->render();$dompdf->stream('report.pdf');4. mPDF
mPDF est une autre bibliothèque pour convertir du HTML en PDF. Elle prend en charge les styles complexes, l'Unicode, ainsi que :
- La création automatique de table des matières
- Les filigranes et arrière-plans
- Le travail avec de grands volumes de données
Exemple avec une feuille de style :
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \\Mpdf\\Mpdf();$mpdf->WriteHTML('<h1>Statistiques</h1> Aussi dans la bibliothèque
Envoi d'email en C++ : bibliothèques et exemples de code
openapi-typescript TypeScript : guide complet avec exemples
Client Elasticsearch C++ : guide complet pour travailler avec le moteur de recherche
Bibliothèque kotlinx.serialization pour le traitement JSON en Kotlin