Je suis récemment tombé sur un os l’autre jour : je devais générer un PDF qui respectait un template HTML/CSS pas très flexible, qui était déjà créé, qui faisait quelques pages, et comment vous dire …
Ce n’est pas du tout la même histoire que partir d’une génération vierge, et ça rend la chose un peu moins évidente.
Après avoir cherché pas mal de solutions (dont la génération en front par le client), je suis tombé sur DomPDF !
DomPDF à la rescousse
DomPDF est une librairie PHP qui porte très bien son nom, est en effet, c’est d’un côté :
- un parseur HTML + CSS (jusqu’à la version 2.1 pour l’instant), qui va rendre votre HTML ainsi que son style,
- un générateur de PDF depuis votre code parsé
Le tout, très bien optimisé, avec un temps de génération très raisonnable.
Utilisation de DOMPDF en PHP
La librairie est disponible en installation directement via composer :
composer require dompdf/dompdf
PHPUne fois installée, nous pouvons passer à la petite démo qui va donc :
- Récupérer votre template html (template.html),
- Créer une instance de DOMPDF,
- Charger votre template HTML+CSS,
- Rendre ensuite le PDF (avec les options A4 / Landscape)
- Le faire télécharger à l’utilisateur (il est tout à fait possible de le stocker dans un nouveau fichier / l’enregistrer en blob dans une base de données)
use Dompdf\Dompdf;
$htmlTemplate=file_get_contents('template.html');
$dompdf = new Dompdf();
$dompdf->loadHtml($htmlTemplate);
// Setup the paper and orientation : landscape / portrait
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
// Output the generated PDF to Browser
$dompdf->stream();
PHPLes limitations de DOMPDF ?
Elles ne sont pas nombreuses, mais pour ne pas vous faire perdre de temps au cas où, je préfère les préciser :
- Support jusqu’à CSS2.1 (toutes les propriétés au delà ne serons pas rendues),
- Support des images au format SVG limité (il est recommandé de les embarquer en base64 dans une balise img)
- Ne supporte pas les propriétés flex/grid
- DOMPDF doit être instancié à chaque nouveau rendu de PDF
Alors qu’est-ce que vous en pensez ?
Si vous ne la connaissiez pas, j’espère que la découverte de cette librairie vous aidera !
N’hésitez pas à me partagez en commentaire ce que vous en pensez !
Besoin de créer des QR Codes avec tracking ?
Testez mon outil « QR Code Facile » pour créer des QR Codes dynamiques illimités, avec tracking + historique de suivis