Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF > FPDF
FPDF Forum d'entraide pour la bibliothèque FPDF permettant de générer des documents PDF en PHP. Avant de poster -> tutoriels FPDF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2007, 15h53   #1
Nouveau Membre du Club
 
Inscription : novembre 2003
Messages : 126
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 126
Points : 37
Points : 37
Par défaut [FPDF] Code interprété d'une page pour creation pdf

Bonjour,
Voila je souhaite en cliquant sur un bouton générer l'équivalent
de la page en cours en pdf et l'ouvrir.
Le probleme est que ma page courante est dynamique. C'est du php.
Du coup, je cherche une fonction me permettant de récupérer
le code interprété côté client (html pur ou avec du javascript).
pour l'envoyer à ma fonction de creation de pdf...
Voila ou j'en suit. Et mon code...
La pager d'appel
Code :
1
2
3
4
5
6
7
 
<?php
$URL  = $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$URL .= ($_SERVER['QUERY_STRING']!='')? '?' : '';
$URL .= $_SERVER['QUERY_STRING'];
?>
<a href="fpdf.phtml?page=<?php echo $URL?>" target="_new">PDF</a>
et la fonction...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<? 
require("html2fpdf.php"); 
$htmlFile = $_GET["page"]; 
$file = fopen($htmlFile,"r"); 
$size_of_file = filesize($htmlFile); 
$buffer = fread($file, $size_of_file); 
fclose($file); 
$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(); 
?>
Je pense que ça marcherait avec une url en .html mais la ça me met une page blanche...
noarno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 18h44   #2
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut,
justement tu devrais essayer avec un .htm pour être sûr (+ vérifier avec php_info()), si ca ne fonctionne pas y a de grandes chances que la safe_mode soit activé (allow_url_fopen à false) et que tu ne puisses donc pas utiliser le protocole http avec fopen(), auquel cas tu pourrais utiliser les fonction de buffer de sortie, ob_sart(), ob_get_content() etc pour mettre toute ta page dans une variable. D'autre part ton code est pas trop sécurisé, il suffit de balancer n'importe quel url pour générer un pdf depuis ton serveur (raison de plus pour utiliser ces fonctions).
Bye

[edit]Si tu utilises fopen() sur une page php sans passer par le protocole http elle sera pas interprétée et t'auras donc le source dans ton pdf[/edit]
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2007, 10h41   #3
Nouveau Membre du Club
 
Inscription : novembre 2003
Messages : 126
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 126
Points : 37
Points : 37
Merci pour tes réponses sur la question, je ne connaissais pas ces balises.
Du coup je galère un peu à les utiliser. J'essai ce que tu as dit, de passer en paramètre le contenu de la page mais ça bloque. Sinon avec un fichier html pure, ça marche bien...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<body>
<body>
<?php
ob_start();
ob_implicit_flush(0);
 
///////ICI se trouve l'ensemble de ma page
 
$contenu=ob_get_contents();
?>
<a href="fpdf.phtml?cont=<?php $contenu; ?>" target="_new">PDF</a>
<?php
ob_end_flush();
?>
</body>
Et il ne passe rien en paramètre.
noarno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2007, 11h10   #4
Nouveau Membre du Club
 
Inscription : novembre 2003
Messages : 126
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 126
Points : 37
Points : 37
en fait il y avait un pb de guillemet, classique.
j'arrive à renvoyer à la page suivante le contenu
interprété de la page(pure html) mais mon script de l'autre coté
me renvoie une fin d'instruction avec un message sur les entete et cgi
Code :
1
2
3
4
5
6
7
8
9
10
<?php 
require("html2fpdf.php"); 
$contenu=$_GET["cont"];
$contenu = str_replace('AAAABBBBCCCCDDDD','"',$contenu);
$contenu = '<html><head></head><body>'.$contenu.'</body></html>';
$pdf=new HTML2FPDF(); 
$pdf->AddPage(); 
$pdf->WriteHTML($contenu); 
$pdf->Output(); 
?>
me renvoie
Code :
1
2
Erreur CGI
L'application CGI spécifiée a mal fonctionné en ne renvoyant pas de jeu complet d'en-têtes HTTP. Les en-têtes renvoyés sont :
noarno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2007, 16h44   #5
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
En fait je pensais plus à un truc du style :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
if(isset($_GET['sendpdf']) && $_GET['sendpdf'] == 'ok') {
$sendPdf = true;
ob_start();
}
 
?>
<html>
<head>
</head>
<body>
<?php echo 'blablabla'; ?>
</body>
</html>
<?php
if(isset($sendPdf)) {
// Tout ca peut aller dans une fonction vu que tu vas le mettre sur toutes les pages
require("html2fpdf.php"); 
$contenu=ob_get_flush(); // récup le tampon et stoppe la bufferisation
$pdf=new HTML2FPDF(); 
$pdf->AddPage(); 
$pdf->WriteHTML($contenu); 
$pdf->Output();
 
}
else {
echo '<a href="'.$_SERVER['PHP_SELF'].'?sendpdf=ok">PDF</a>';
}
?>
Y a une taille limite aux paramètre passés en GET, donc ta méthode peut poser problème.
En fait $pdf->Output(); c'est pour envoyer le pdf au nav en téléchargement ou pour l'afficher dans le navigateur ? C'est quoi au fait ta lib HTML2PDF ?
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 10h30   #6
Nouveau Membre du Club
 
Inscription : novembre 2003
Messages : 126
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 126
Points : 37
Points : 37
merci
je vais essayer ça,
sinon la librairie je l'ai trouvée sur internet, elle
est spécialement faite pour convertir du html
en pdf je crois...
noarno est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h36.


 
 
 
 
Partenaires

Hébergement Web