jeudi 10 mai 2012

PHP - Génération de pdf


Le projet du jour consiste à générer un fichier PDF.
La méthode est très simple, se résume à l'installation d'une série de fichiers et quelques lignes de code.

Le contenu de mon fichier PDF sera construit dans une page php. Je peux donc y placer du texte mis en page avec quelques fioritures (tableaux, images, etc.)
Il faut cependant être conscient que la mise en page doit rester simple. Évitez de rajouter du javascript, du flash ou de la css trop complexe. En plus, la page dont contenir du html bien formé (respect strict de la syntaxe et des balises) sinon, c'est le bug du moteur DOM.

Le moteur utilisé n'est autre que dompdf. J'ai pris la 0.6.0 beta qui donne de bien meilleurs résultats que la 0.5.2. Seule chose à savoir, la variable DOMPDF_ENABLE_REMOTE est à false par défaut. Il faut lui donner la valeur true pour pouvoir afficher des images.


La méthode consiste à ouvrir la page php, à injecter son contenu dans une variable. Vous donnez cette variable à manger à dompdf qui se charge ensuite d'effectuer le rendu et de l'envoyer vers un fichier physique. Voici mon bout de code.

#!/user/bin/php
<?php
      include("dompdf-0.6/dompdf_config.inc.php");
      $page = fopen("http://monserveur/mapage.php", "r");
      $texte = "";


      $dompdf = new DOMPDF();


      while(!feof($page)){
            $ligne = fgets($page, 4096);
            $texte .=$ligne;
      }


      $dompdf->load_html($texte);
      $dompdf->render();


      $pdf = $dompdf->output();
      file_put_contents("fichier.pdf", $pdf);
?>

Vous aurez remarqué au passage la première ligne du code. Cela me permet de lancer directement ce script en ligne de commande à partir d'un script.sh ou de mon crontab.
Vous disposez à présent d'un beau petit fichier pdf dans votre répertoire de travail.



Aucun commentaire:

Enregistrer un commentaire