Skip to content

Instantly share code, notes, and snippets.

@aliastim
Last active May 17, 2020 18:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aliastim/5287e9a91685a071e16269cfc76f06a8 to your computer and use it in GitHub Desktop.
Save aliastim/5287e9a91685a071e16269cfc76f06a8 to your computer and use it in GitHub Desktop.

Générer un fichier PDF en php avec html2pdf 🧾

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.

Installation

Nous allons ici installer html2pdf avec Composer à l'aide de la commande :

composer require spipu/html2pdf

Générer le document

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');

Créer une classe pour faciliter l'utilisation

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment