Je vais vous présenter aujourd’hui comment intégrer la librairie FPDF à symfony et surtout, comment l’intégrer proprement dans une page web.
Intégration de la librairie FPDF
- téléchargez la dernière version de la librairie FPDF (page de téléchargement officielle – version 1.6 tgz utilisée dans ce tutoriel)
- décompressez le fichier dans le répertoire lib/ de votre projet (personnellement, j’ai créé un repertoire lib/tools/) ce qui doit donner : /path_du_projet/lib/fpdf16
Intégration à l’admin generator
- dans le fichier action.class.php de votre module d’admin generator :
public function executeMonPDF(sfWebRequest $request){
// on définit le répertoire des polices (en dur ici mais il suffit de placer le paramètre dans le fichier app.yml)
define('FPDF_FONTPATH','/path_du_projet/lib/tools/fpdf16/font/');
// on charge la classe FPDF
$this->pdf = new FPDF();
// on ajoute une page au document
$this->pdf->AddPage();
// j'écris un texte en arial 11 gras sur fond blanc
$this->pdf->SetFillColor(204,204,204);
$this->pdf->SetFont("Arial",'B',11);
$this->pdf->Write(5,'Mon premier document PDF sous symfony !');
// nom du fichier pdf qui sera créé
$this->file_name = "uploads/pdf/mon_pdf_sous_symfony.pdf";
// on exporte le fichier
$this->pdf->Output($this->file_name, "F");
// on définit la classe du div contenant le PDF
$this->classe = "pdf";
// on donne un titre <h1> à la page
$this->h1 = "Impression de mon premier PDF";
// on appelle le template pdfSuccess.php
$this->setTemplate('pdf');
}
- dans le fichier pdfSuccess.php de votre module d’admin generator :
<h1><?php echo $h1 ?></h1>
<div class="sf_admin_pdf">
<object data="<?php echo $file ?>" type="text/html" codetype="application/pdf" class="object_pdf"></object>
<div>
- dans le fichier web/css/main.css du projet :
div.sf_admin_pdf{
margin:0 auto;
text-align:center;
width:95%;
height:80%;
border:2px solid black;
}
.object_pdf{
width:100%;
height:100%;
}
- dans le fichier generator.yml de votre module d’admin generator :
object_actions:
monpdf: { label: mon PDF , action: MonPDF }
Ces quatres fichiers devraient vous permettre d’intégrer un document PDF de cette manière : 
Cela permet d’éviter d’avoir directement le document à télécharger (on peut le sauvegarder ou l’imprimer par exemple) ou de l’avoir en plein écran et de devoir faire Page précédente ou même de l’avoir dans une nouvelle fenêtre.
J’ai été beaucoup plus loin dans l’intégration de FPDF, j’ai créé une classe qui étend celle de FPDF qui me permet de gérer un en-tête et/ou un pied de page ou encore de créer des fonctions d’affichage différentes, etc …
Pour ce qui est de l’utilisation de FPDF, elle est assez simple et la documentation sur le site officiel (documentation + tutoriaux) est assez explicite. Si vous avez encore des soucis, d’autres tutoriaux sont disponibles par une simple recherche sur Internet.
Petite astuce, FPDF ne gère pas l’UTF-8, pensez donc à bien utiliser utf8_decode() au besoin
On se retrouve bientôt pour un tutoriel sur l’intégration de XAJAX !