Générer des PDF avec DomPDF et CakePHP
Grâce à la librairie DomPDF couplé au plugin cakephp-dompdf, il est très facile de générer des PDF en HTML/CSS.
Environnement
Voici ma configuration pour cette démo
- Une VM ubuntu server en version 14
- Server Apache
- PHP en version 7 (la version minimale est la 5.4.16)
- CakePHP en version 3.2 (la version minimale est la 3.0)
- La librairie DomPDF en version 0.7
- Le plugin cakephp-dompdf en version 1.0
Installation
Pour installer la librairie ainsi que le plugin, rien de plus simple en utilisant composer
Très important, il ne faut pas oublié de générer les liens symboliques du plugin.
On charge ensuite le plugin
En route pour l’aventure
Le plus simple pour générer les PDF est d’écouter les urls afin de traiter l’extension .pdf
(Documentation)
On va donc, pour l’exemple définir une auto route.
Et pour le controlleur :
On teste notre route http://localhost/demo/view/test.pdf et bim!!!
Ne vous inquiétez pas, c’est normal, pas de panique on a pas encore créé notre template.
J’ai view un PDF
Comme on écoute toujours la maîtresse et que l’on est bien sage, on va créer notre fichier view.ctp
dans Demo/pdf/view.ctp
Hey, t’est bien gentil mais là il me demande de créer un layout.
Oui je sais mais comme la vie est bien faite, notre petit plugin inclut justement un Layout qui nous permet entre autre de fixer un header ainsi qu’un footer.
Plugue ton Layout
Pour faire les choses bien (il faut toujours faire les choses bien), on va modifier notre Controller
On recharge la page, et là, sous vos yeux ébahis, un magnifique PDF apparaît dans votre Firefox (comment ça vous n’utilisez pas Firefox ?)
Tout ça juste pour charger un Layout ?
En fait on a surtout dit à CakePHP d’utiliser le plugin pour générer la vue, je vous invite à lire la documentation du plugin pour comprendre ce que je viens de faire.
Je veux du CSS et des nanas
Bon les h1 et les p c’est bien gentil mais comment je style ça ? Et les images comment ça marche ?
On y viens, et on va même faire un header et un footer comme je suis gentil.
Allez c’est parti on crée notre beau css
Et comme tout est prévu, notre beau petit plugin possède un helper, on peut donc modifier notre fichier view.ctp
Ah oui, j’oubliais les nanas, pour les images c’est aussi avec le helper (et on en profite pour rajouter le header et le footer)
On actualise la page, et voilà notre PDF stylé comme jamais
Aller plus loin
Je vous invite à lire la documentation du plugin qui est très complète.