Le site est en ligne depuis 465 jours. 31 articles sont publiés / 46 commentaires au total.

Générez vos PDFs avec PHP, utilisation de DomPDF

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
PHP

Une 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();
PHP

Les 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 !

Annonces internes

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nouvel outil en ligne : Pomodoro Timer, optimisez votre temps et votre productivité
This is default text for notification bar