Utiliser des templates en PDF
Publié par Sebastien Dudek il y a 6 mois
L'extension FPDI pour gérer les templates
FDPI est une extension de FPDF créée par Jan Slabon en août 2004. Cette extension permet d'ajouter des fonctionnalités de templates et d'importation de fichiers pdf existants à FPDF. Elle se compose de deux fichiers "fpdf_tpl.php" et "fpdi.php" qu'il suffit de copier dans le même répertoire que le fichier "fpdf.php" en guise d'installation. Il suffira ensuite d'inclure dans vos scripts le fichier "fdpdi.php" (ou "fpdf_tpl.php" en fonction des fonctionnalités dont vous avez besoin) en lieu et place du fichier "fpdf.php". Chacun des deux fichiers apporte des nouvelles fonctionnalités :
- "fpdf_tpl.php" ajoute les fonctionnalités de template
- "fpdi.php" ajoute les fonctionnalités d'importation de fichiers PDF (nécessite aussi fpdf_tpl.php pour fonctionner)
Vous pouvez télécharger FPDI à cette adresse : http://fpdi.setasign.de
Utilisation des templates
La première fonctionnalité offerte par FDPI est la possibilité d'intégrer des templates au sein de vos pdf. Pour cela, seul le fichier "fpdf_tpl.php" est nécessaire. L'objet représentant le pdf que vous souhaitez générer ne sera plus un objet 'fpdf' mais un objet 'fpdf_tpl' (objet dérivé de fpdf). Son comportement sera exactement le même que celui d'un fpdf, tout en intégrant 4 méthodes supplémentaires :
- begintemplate() qui marque le début de la création d'un template
- endtemplate() qui marque la fin de la création du template
- usetemplate() qui permet d'utiliser le template
- gettemplatesize() qui permet de récupérer les dimensions du template
Vous aurez compris que l'utilisation des templates FPDI est extrêmement simple. On créé un template grâce aux méthodes begintemplate() et endtemplate(). Entre ces deux commandes, il suffit d'utiliser les commandes traditionnelles de FPDF pour créer le template. Par la suite ce template pourra être inséré dans n'importe quelle page grâce à la fonction usetemplate() qui offre également des fonctionnalités de redimensionnement. Ces templates peuvent donc être considérés comme de simples objets (comme des images) que l'on peut reproduire autant de fois que souhaité à l'intérieur des fichiers PDF. Le principal avantage se situe au niveau du poids final du fichier étant donné qu'un seule instance du template sera présente dans le fichier final tout en pouvant l'afficher sur autant de pages que souhaité.
- <?php
- include ('fpdf_tpl.php');
- $pdf= new fpdf_tpl();
- $pdf->AddPage();
- $tplidx = $pdf->beginTemplate(0,0,180,350);
- $pdf->SetFont('Arial','',14);
- $pdf->SetTextColor(0);
- $pdf->write(10,"demo de template");
- $pdf->endTemplate();
- $pdf->useTemplate($tplidx,10,120,100);
- $pdf->useTemplate($tplidx,10,140,200);
- $pdf->Output("testfpdf4.pdf","I");
- ?>
Importation de fichiers PDF existants
FPDI va également nous permettre d'importer des fichiers PDF existants. Pour cela, les deux fichiers de l'extension FPDI seront nécessaires. Il nous suffira d'inclure le fichier 'fpdi.php' dans nos scripts mais celui-ci ne peut fonctionner sans le fichier 'fpdf_tpl.php'. En effet, l'inclusion de PDF existants se base sur le même système de templates que vu précedemment, les fichiers importés seront simplement considérés comme des templates. Le fichier 'fpdi.php' dérive la classe fpdf_tpl en y ajoutant deux nouvelles méthodes :
- Setsourcefile() qui permet de sélectionner un fichier pdf
- Importpage() qui permet de transformer une des pages du pdf en template.
La procédure va être très proche de celle vu précedemment. Au lieu de créer un template de toute pièce, il va nous suffir de l'importer à partir d'un fichier :
- <?php
- include ('fpdi.php');
- $pdf= new fpdi();
- $pdf->AddPage();
- $pagecount = $pdf->SetSourceFile("test_fpdf4.pdf");
- $tplidx = $pdf->ImportPage(1);
- $pdf->useTemplate($tplidx,10,20,100);
- $pdf->useTemplate($tplidx,10,40,200);
- $pdf->Output("test.pdf","I");
- ?>