Génération de PDF à la vollée...

Hemi76
Invité n'ayant pas de compte PHPfrance

08 août 2006, 15:07

Bonjour à toutes zé à tous !

Dans le cadre d'un projet perso., je voudrais offrir la possibilité au visiteur de générer un fichier PDF de la page (HTML) qu'il consulte. Pour se faire, j'utilise HTML2FPDF pour générer les fichiers PDF.

Mon problème est que je n'arrive pas à spécifier au script HTML2PDF la page à convertir (tout du moins sans mettre le nom de la page "en dur" dans celui-ci).

Voici le code de la page faisant appel à HTML2FPDF :

Code : Tout sélectionner

<? require("html2fpdf.php"); //Get file contents $htmlFile = "page_test_2.html"; <= Page à convertir $file = fopen($htmlFile,"r"); $size_of_file = filesize($htmlFile); $buffer = fread($file, $size_of_file); fclose($file); //Initialize class //define RELATIVE_PATH,FPDF_FONTPATH if needed $pdf=new HTML2FPDF(); $pdf->AddPage(); //Code below used only if you want relative links to be understood //$pdf->setBasePath(dirname(__FILE__)."\".$htmlFile);//insert full path where html is $pdf->WriteHTML($buffer); $pdf->Output(); //Read the FPDF.org manual to know the other options ?>
Help me !

D'avance, merci pour vo(tre)(s) réponse(s).

--
Hémi

Eléphant du PHP | 140 Messages

08 août 2006, 16:57

Je ne comprends pas trop la question... pourquoi ne passes-tu pas la page a afficher en parametre ???

hemi76
Invité n'ayant pas de compte PHPfrance

09 août 2006, 16:01

Honte sur moi... je devais être fatigué !!! (on va dire ça) :D
Il me génère bien un PDF de ma page...

C'est pas grave, j'ai une dernière question :

J'ai fait quelques essais en utilisant cette fois-ci du contenu dynamique (PHP & MySQL). Pour ces essais, j'ai fait simple : un champ nom et un autre prénom stockés dans une base.
J'ai donc un formulaire qui envoie les infos dans la base. Une page qui affiche les infos avec un lien qui envoie cette meme page vers la page de génération de PDF.
Malheureusement, mon PDF de sortie ne comporte pas les données de la base !

Code de la page qui affiche les infos :

Code : Tout sélectionner

<? include("connection/connection.php"); $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($bdd) or die ('Erreur :'.mysql_error()); $select = 'SELECT * FROM test1'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Document sans nom</title> </head> <body> <? if ($val = mysql_fetch_array($result)) { ?> <table width="50%" border="1" cellspacing="0" cellpadding="0"> <tr> <td>Test de page HTML2PDF</td> </tr> <tr> <td width="66%"><? echo $val["nom"]; ?></td> </tr> <tr> <td width="66%"><? echo $val["prenom"]; ?></td> </tr> <tr> <td><a href="generation_pdf.php?page=page_test.php">PDF</a></td> </tr> </table> <? } ?> </body> </html> <? mysql_close(); ?>
Code de la page qui génère le PDF :

Code : Tout sélectionner

<? require("html2fpdf.php"); //Get file contents $htmlFile = $_GET["page"]; $file = fopen($htmlFile,"r"); $size_of_file = filesize($htmlFile); $buffer = fread($file, $size_of_file); fclose($file); //Initialize class //define RELATIVE_PATH,FPDF_FONTPATH if needed $pdf=new HTML2FPDF(); $pdf->AddPage(); //Code below used only if you want relative links to be understood //$pdf->setBasePath(dirname(__FILE__)."\".$htmlFile);//insert full path where html is $pdf->WriteHTML($buffer); $pdf->Output(); //Read the FPDF.org manual to know the other options ?>
Pour ce qui est des autres fichiers, ce sont ceux qui sont disponibles en téléchargement sur le site de HTML2FPDF

Quelqu'un a une idée ?

Encore merci d'avance pour vos réponses !

PS : Désolé Vorkosigan de ne pas avoir été très clair... :roll:

--
Hémi

Eléphant du PHP | 140 Messages

09 août 2006, 16:40

Malheureusement, mon PDF de sortie ne comporte pas les données de la base !
As-tu la possibilite de rajouter des traces dans ton fichier PHP pour voir si la connection a la base se passe bien ?

Eléphant du PHP | 140 Messages

09 août 2006, 16:41

D'ailleurs, question toute bete aussi, es-tu sur que ton PHP est bien évalué ? Il ne s'agirait pas que ton fichier PHP soit transmis tel quel a HTML2PDF en tant que page HTML, il faut que cette page soit evaluee par ton moteur PHP.

hemi76
Invité n'ayant pas de compte PHPfrance

10 août 2006, 09:08

Qu'entends-tu par évaluée ?

PS : Je comprend vite, mais il faut m'expliquer longtemps... :roll:

Eléphant du PHP | 140 Messages

10 août 2006, 10:01

Qu'entends-tu par évaluée ?
Une page non-evaluee c'est ca :

Code : Tout sélectionner

<html> <body> <?php echo "test"; ?> </body> </html>
Une page evaluee c'est ca :

Code : Tout sélectionner

<html> <body> test </body> </html>

hemi76
Invité n'ayant pas de compte PHPfrance

10 août 2006, 10:56

OK ! :oops:

Oui, si la page est entièrement statique, ça fonctionne parfaitement bien. D'ailleurs, tout ce qui n'est pas dynamique est présent dans le PDF. En simplifiant, le problème vient du fait que les données de la base ne sont pas insérées avant que le PDF ne soit généré...

Eléphant du PHP | 140 Messages

10 août 2006, 17:19

Oui, si la page est entièrement statique, ça fonctionne parfaitement bien. D'ailleurs, tout ce qui n'est pas dynamique est présent dans le PDF. En simplifiant, le problème vient du fait que les données de la base ne sont pas insérées avant que le PDF ne soit généré...
La conclusion c'est que HTML2PDF ne convient pas pour des pages HTML generees dynamiquement.