Générer des PDF en PHP
Il peut s’avérer utile de générer des pdf disponibles au téléchargement à partir d’une base de donnée sur son site. Voici donc les bibliothèques disponibles ainsi qu’un exemple par la pratique.
Il existe un certain nombre de bibliothèques de code gratuites et de bonnes qualité pour cela. Comme FPDF sur www.fpdf.or
, 6 lignes de code seulement sont nécessaires pour générer un document, FPDF étant compatible PHP 4 et PHP 5.
Autre solution, utiliser le package standard PECL pdflib téléchargeable en version 2.1.4 sur http://pecl.php.net/package/pdfli. Le code est plus long mais le support de pdflib sera plus pérenne.
Voici donc un exemple de script permettant de générer vos PDF de façon automatisée à partir d’une base de données:
<?php
$pdf=pdf_new();
if (!pdf_open_file($pdf, »"))
{
print(« Error »);
exit(0);
};
pdf_set_info($pdf, »Author », »Vous »);
pdf_set_info($pdf, »title », »Votre recette »);
pdf_set_info($pdf, »Creator », »Nom du site »);
pdf_set_info($pdf, »Subject », »ce que vous voulez »);
$dblink=mysql_connect(« localhost », »root », »");
mysql_select_db(« nom_de_la_base »);
$sql= »SELECT * FROM recettes »;
$resultat=mysql_query($sql);
$liste= »";
while ($recette=mysql_fetch_array($resultat))
{
$nom=$recette['nom'];
pdf_begin_page($pdf,595,842);
pdf_add_bookmark($pdf, »fiche $recette »,0,0);
$font=pdf_findfont($pdf, »Helvetica », »host »,0);
if ($font) pdf_setfont($pdf,$font,12);
pdf_set_value($pdf, »textrendering »,1);
pdf_show_xy($pdf, »$recette »,50,750);
pdf_moveto($pdf,50,740);
pdf_stroke($pdf);
pdf_end_page($pdf);
}
mysql_close($dblink);
pdf_close($pdf);
$buf=pdf_get_buffer($pdf);
$len=strlen($buf);
header(« Content-type: application/pdf »);
header(« Content-lenght: $len »);
header(« Content-Disposition: inline; filename=fichier-recette.pdf »);
print($buf);
pdf_delete($pdf);
?>
Si vous souhaiter enregistrer le fichier au lieu de l’afficher remplacer les lignes allant de « header » à « print($buf); » par:
$fichier= fopen(« fichier-recette.pdf », » w+ « );
fwrite($fichier, $buf);
fclose($fichier);
Loading ...