Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1336 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Insérer données PHP dans un PDF

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Insérer données PHP dans un PDF

n°1849508
axelandre
Posté le 10-02-2009 à 16:48:16  profilanswer
 

Bonjour à tous,
 
Je souhaite mettre à jour le contenu d'un fichier pdf avec des données récupérées dans un formulaire html.
 
Comment puis-je faire ?
 
Je dois utiliser php pour la récupération de données et donc mon but serait d'injecter ensuite ces données dans un fichier pdf gabari.
 
Peut-on mettre des variables dans le pdf pour les alimenter ensuite grâce à php.
 
merci pour vos réponses.

mood
Publicité
Posté le 10-02-2009 à 16:48:16  profilanswer
 

n°1849519
Profil sup​primé
Posté le 10-02-2009 à 17:11:58  answer
 

bonjour, tu peux générer un pdf à la volée avec la lib fpdf.

n°1849521
axelandre
Posté le 10-02-2009 à 17:16:45  profilanswer
 

J'ai vu l'existance de cette librairie mais il est impossible de créer un pdf comme je l'ai expliqué pour ensuite lui injecter des données aux endroits voulus?

n°1849523
Profil sup​primé
Posté le 10-02-2009 à 17:18:15  answer
 

apparemment non, tu dois reconstruire ton pdf à chaque fois...

n°1849524
axelandre
Posté le 10-02-2009 à 17:23:01  profilanswer
 

ok
 
Et la j'ai commencé à tester la librairie fpdf mais un message d'erreur survient :
 
FPDF error: Some data has already been output, can't send PDF file
 
Ca te dit quelque chose ?
 
J'ai regardé sur plusieurs site et toutes les propositions indiqué ne fonctionnent pas.
 
Voici mon code :
 

<!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>PDF - PHP</title>
</head>
<body>
<?php
require('fpdf.php');
$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World !');
$pdf->Output();
?>
</body>
</html>


 
Tu vois le problème ?

n°1849526
Profil sup​primé
Posté le 10-02-2009 à 17:25:32  answer
 

oui, il pète aux yeux.
Ca n'a aucun sens d'envoyer des données au format PDF au beau milieu d'un fichier texte contenant du code HTML.

n°1849530
axelandre
Posté le 10-02-2009 à 17:28:45  profilanswer
 

ha ok.
 
Donc il faut que j'enlève le code html ?
 
Alors j'ai enlevé le code html mais maintenant il ne m'affiche pas le pdf mais un texte incompréhensible !
 
merci pour ton aide qui m'est précieuse!
 
Voici ce qu'il m'affiche :
 
%PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream xœ3Rðâ2Ð35W(çr QÐw3T04Ó30PISp  êZ*˜[š€…¤(hx¤æää+„çå¤((j*„d&ãw endstream endobj 1 0 obj <> endobj 5 0 obj <> endobj 2 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F1 5 0 R >> /XObject << >> >> endobj 6 0 obj << /Producer (FPDF 1.53) /CreationDate (D:20090210172655) >> endobj 7 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /FitH null] /PageLayout /OneColumn >> endobj xref 0 8 0000000000 65535 f 0000000229 00000 n 0000000417 00000 n 0000000009 00000 n 0000000087 00000 n 0000000316 00000 n 0000000521 00000 n 0000000597 00000 n trailer << /Size 8 /Root 7 0 R /Info 6 0 R >> startxref 700 %%EOF  
 
Ca te parle ?

n°1849531
olivthill
Posté le 10-02-2009 à 17:34:26  profilanswer
 

C'est le problème classique du header.
 
Cette question fait d'ailleurs l'objet du 9eme point du FAQ squi se trouve sur le site de fpdf, http://www.fpdf.org/

Citation :

Il ne faut rien envoyer d'autre au navigateur que le PDF lui-même : pas d'HTML, pas d'espace, pas de retour-chariot. Un cas fréquent est d'avoir des lignes vides à la fin d'un fichier inclus.

Donc, il faut enelever doctype, html, head, etc.
Le principe est qu'une page qui contient un document PDF ne contient que du PDF (généré par le fpdf et PHP) et un header special (généré par fpdf), mais pas de HTML ordinaire. On ne peut pas faire un panachage avec une partie HTML ordinaire et une partie PDF, sauf si on utilise l'astuce d'avoir des frames comme sur le site de la Bibliothèque Nationale.

n°1849532
Profil sup​primé
Posté le 10-02-2009 à 17:34:56  answer
 

là encore, réfléchis... Il faut que tu indiques au navigateur (client) que tu lui envoies du PDF et pas du texte simple. Pour çà tu lui renseignes le type mime à l'aide de la fonction header (appelle là en haut du script)

Code :
  1. header('Content-Type: application/pdf'); //le mime type qui correspond au pdf est
  2. // application/pdf

n°1849534
olivthill
Posté le 10-02-2009 à 17:36:55  profilanswer
 

J'ai été grillé, trop lent à répondre. Je vais esayer d'aller plus vite pour répondre à la question "Ca te parle ?". La réponse est "oui, c'est un fichier PDF". Pour plus d'infos, voir le tutoriel sur le site http://www.fpdf.org/.
 
Edit : Encore grillé, C'est pas grave.
Ce n'est pas obligatoirement un problème de header. Lire le point 2 du FAQ sur le site qui dit qu'il faut fermer IE et le réouvir.


Message édité par olivthill le 10-02-2009 à 17:41:45
mood
Publicité
Posté le 10-02-2009 à 17:36:55  profilanswer
 

n°1849535
axelandre
Posté le 10-02-2009 à 17:41:02  profilanswer
 

Désolé pour mon ignorance mais ça ne fonctionne pas.
 
Le header je l'ai mis dans les balises php après l'appel du fichier "fpdf.php" et rien ne change, il me sort toujours les lignes que j'ai mentionnées plus haut!
 
Sur les tutoriel du site, ils indiquent le même code que j'ai présenté et cela ne fonctionne pas... je suis désemparé!

n°1849536
Profil sup​primé
Posté le 10-02-2009 à 17:43:39  answer
 

fais voir ton code s'il te plait.

n°1849538
axelandre
Posté le 10-02-2009 à 17:45:06  profilanswer
 

Le voici :  
 

Code :
  1. <?php
  2. header('Content-Type: application/pdf'); //le mime type qui correspond au pdf est// application/pdf
  3. require('fpdf.php');
  4. $pdf=new FPDF();
  5. $pdf->Open();
  6. $pdf->AddPage();
  7. $pdf->SetFont('Arial','B',16);
  8. $pdf->Cell(40,10,'Hello World !');
  9. $pdf->Output();
  10. ?>


 
Merci beaucoup pour votre patience et pour vos explications qui m'éclaircisse

n°1849539
Profil sup​primé
Posté le 10-02-2009 à 17:50:15  answer
 

Essaye çà (juste pour tester) :
 

Code :
  1. <?php
  2. header('Content-Type: application/pdf'); //le mime type qui correspond au pdf est// application/pdf
  3. require('fpdf.php');
  4. $pdf=new FPDF();
  5. $pdf->Open();
  6. $pdf->AddPage();
  7. $pdf->SetFont('Arial','B',16);
  8. $pdf->Cell(40,10,'Hello World !');
  9. $pdf->Output('tmp.pdf');
  10. readfile('tmp.pdf');
  11. ?>


Que se passe-t-il ?

n°1849540
axelandre
Posté le 10-02-2009 à 17:52:58  profilanswer
 

Ca ne change rien, j'ai toujours les lignes incompréhensibles qui s'affiche sur mon navigateur!

n°1849542
axelandre
Posté le 10-02-2009 à 17:57:35  profilanswer
 

C'est bon!
 
j'ai ouvert une autre fenetre et est renseigne le chemin vers le fichier qui génère le pdf et ca me l'a affiché!
 
C'est parce que je rafraichissais la page alors qu'il faut en fait la fermer et en réouvrir une autre!
Enfin.
 
mais du coup est-il possible d'ouvrir le fichier pdf dans une nouvelle fenetre ?
 
Merci pour votre aide.

n°1849596
PierreC
Posté le 10-02-2009 à 22:08:53  profilanswer
 

j'arrive après la bataille mais il est possible en php de modifier un pdf existant avec FPDI qui est une extention de FPDF


---------------
Du tofu en Alsace : www.tofuhong.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Insérer données PHP dans un PDF

 

Sujets relatifs
[PHP] Problème Array : test de valeurs negatives de suiteImporter des données de plusieurs fichiers EXCEL vers ACCESS
Création liste déroulante html avec PHP + XML[RESOLU] [PHP/MYSQL] Problème d'exécution de requete imbriqué
Récupération des données d'un formulaire[PHP / MySQL] Saisie de texte et formatage
[AJAX PHP]Rediriger dossiers d'un domaine vers la page d'accueilQuel éditeur utilisez-vous pour coder en PHP ?
[PHP] Equivalent CTRL+F5 - Refresh complet sans cachePHP explication fonction pack()
Plus de sujets relatifs à : Insérer données PHP dans un PDF


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR