html2pdf est une librairie simple d'utilisation et gratuite très utile pour générer des fichiers pdf. La librairie permet entre autre de transformer du html en pdf. Nous allons ici, voir comment l'utiliser.
Nous allons ici installer html2pdf avec Composer à l'aide de la commande :
composer require spipu/html2pdf
Maintenant que la librairie est installée, il ne reste plus qu'à générer un nouveau pdf.
Pour cela, sur un fichier php, nous allons appeler la librairie et faire appel à la classe Html2Pdf() :
use Spipu\Html2Pdf\Html2Pdf;
$html2pdf = new Html2Pdf();
$html2pdf->writeHTML('<h1>HelloWorld</h1>This is my first test');
$html2pdf->output();
⁉️ La fonction output() seule affichera le fichier pdf dans le navigateur. Pour créer (et non pas juste afficher) un nouveau fichier pdf, il suffit d'ajouter en attribut le chemin complet du dossier dans lequel on veut le stocker. Exemple :$html2pdf->output(realpath("./factures").'/'.monfichier.pdf, 'F');
Nous allons maintenant créer une classe pour générer notre fichier pdf plus rapidement.
Nous prendons ici, l'exemple d'un fichier facture.pdf :
<?php
namespace App\Entity;
use Spipu\Html2Pdf\Html2Pdf;
class Pdf
{
public function date()
{
$datedujour = getdate()['mday'].'-'.getdate()['mon'].'-'.getdate()['year'];
return $datedujour;
}
public function namegenerator()
{
$facture_name = $this->date().'_'.uniqid().'.pdf';
return $facture_name;
}
public function PDFGenerator($attribut1, $attribut2)
{
$datedujour = $this->date();
$chemin_complet = realpath("./factures");
$facture_name = $this->namegenerator();
$html2pdf = new Html2Pdf('P', 'A4', 'fr');
$html2pdf->writeHTML
('
<style type="text/css">
... /* Design de ma page */
</style>
<page backtop="10mm" backleft="10mm" backright="10mm" backbottom="10mm" footer="page;">
<page_footer>
... /* Le pied de ma page */
</page_footer>
... /* Le contenu de ma page */
</page>
');
$html2pdf->output($chemin_complet.'/'.$facture_name, 'F');
return $facture_name;
}
}
Maintenant si l'on souhaite générer notre fichier depuis un autre fichier php, il nous suffit d'appeler la fonction :
use App\Entity\Facture; /* On appelle notre classe */
$pdf = new Pdf();
$pdf_name = $pdf->PDFGenerator($attribut1, $attribut2); /* Le PDF est généré et la variable récupère le nom */
Vous pouvez retrouver toutes les fonctionnalités disponible sur le github de html2pdf. Et, vous pourrez trouver ici -> Un template de facture en html pour la librairie.