Génération de rapports PDF en PHP : choisir une bibliothèque
La création de documents PDF est l'une des tâches les plus courantes dans le développement web. Factures, actes, rapports statistiques, listes de prix — tout cela doit souvent être généré dynamiquement côté serveur. PHP propose plusieurs bibliothèques matures pour la génération de PDF. Dans cet article, nous allons examiner trois outils les plus populaires : FPDF, TCPDF et Dompdf, et fournir des exemples pratiques de code.
1. FPDF — un classique léger et rapide
FPDF est une bibliothèque simple qui ne nécessite aucune dépendance externe. Elle est idéale pour les rapports de base : texte, tableaux, images simples. Principales caractéristiques :
- Fonctionne sans installation d'extensions supplémentaires (sauf GD standard pour les images).
- Prend en charge l'UTF-8 via un plugin séparé (tFPDF) ou une conversion manuelle des polices.
- Excellente performance sur les documents simples.
Exemple de création d'un rapport PDF simple avec un tableau :
<?phprequire('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Rapport de ventes', 0, 1);$pdf->SetFont('Arial', '', 12);
// En-têtes du tableau$pdf->Cell(40, 10, 'Produit', 1);$pdf->Cell(30, 10, 'Quantité', 1);$pdf->Cell(40, 10, 'Prix', 1);$pdf->Ln();
// Données$pdf->Cell(40, 10, 'Ordinateur portable', 1);$pdf->Cell(30, 10, '5', 1);$pdf->Cell(40, 10, '45000 RUB', 1);$pdf->Ln();$pdf->Cell(40, 10, 'Souris', 1);$pdf->Cell(30, 10, '10', 1);$pdf->Cell(40, 10, '1200 RUB', 1);
$pdf->Output('D', 'report.pdf');?>2. TCPDF — un outil puissant pour les rapports complexes
TCPDF est une version étendue de FPDF avec prise en charge de l'UTF-8, du CSS, des balises HTML, des codes QR, des signatures numériques et bien plus encore. Recommandé pour :
- Documents avec cyrillique et autres polices non latines.
- Rapports avec mise en page complexe (en-têtes/pieds de page, tableaux multi-pages).
- Génération de PDF/A pour l'archivage.
Exemple d'utilisation du balisage HTML dans TCPDF :
<?phprequire_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->SetCreator('PythonLib');$pdf->SetAuthor('Développeur');$pdf->SetTitle('Rapport complexe');
$pdf->AddPage();$html = '<h2>Statistiques du mois</h2><table border="1" cellpadding="5"><tr><th>Paramètre</th><th>Valeur</th></tr><tr><td>Visiteurs</td><td>12 450</td></tr><tr><td>Commandes</td><td>342</td></tr></table><p>Généré <strong>automatiquement</strong>.</p>';
$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('stat.pdf', 'I');?>3. Dompdf — génération à partir de HTML/CSS
Dompdf est une bibliothèque unique qui rend le PDF à partir de HTML et CSS standard. C'est le choix idéal si vous avez déjà une mise en page de rapport (par exemple, pour l'impression depuis un navigateur). Prend en charge :
- CSS 2.1 et partiellement CSS 3 (float, position, border-radius).
- Intégration d'images (base64 ou par URL).
- Tableaux, listes, documents multi-pages.
Exemple de conversion d'un modèle HTML en PDF :
<?phprequire 'vendor/autoload.php';
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<html><head> Aussi dans la bibliothèque
Autorisation et authentification en Swift : guide complet pour iOS/macOS
Géolocalisation et cartes en Swift pour iOS/macOS : guide complet
Compression JavaScript (Node.js) : guide complet avec exemples