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 09/03/2006, 13h28   #1
Membre à l'essai
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 22
Points : 22
Envoyer un message via MSN à reventlov
Par défaut [FPDF] afficher un pdf à la volée

Salut,

Voici un script qui crée un pdf avec la bibliothèque pdflib.
Un fois le fichier créé sur le disque dur, j'affiche un lien vers le fichier pdf.

Ce que je voudrais c'est que le fichier pdf ne soit pas ecrit sur le disque mais directement affiché dans le navigateur. Comment dois-je m'y prendre ?

voici le code php de mon script actuel:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
$pdf = pdf_new();
pdf_open_file($pdf, "test.pdf");
 
 
pdf_set_info($pdf, "Author", "reventlov");
pdf_set_info($pdf, "Title", "pages de test");
pdf_set_info($pdf, "Creator", "See Author");
pdf_set_info($pdf, "Subject", "Testing");
 
//image_01
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 12, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_01=pdf_open_image_file($pdf,"jpeg","1.jpg","","");
pdf_place_image ($pdf,$images_01,0,0,0.36);
pdf_show_xy($pdf, "Times Roman", 120, 405);
pdf_show_xy($pdf, "tagadatsointsoin12356", 150, 390);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
//image_02
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 2");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_02=pdf_open_image_file($pdf,"jpeg","2.jpg","","");
pdf_place_image ($pdf,$images_02,0,0,0.36);
pdf_show_xy($pdf, "Times Roman", 50, 400);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
//image_03
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 3");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_03=pdf_open_image_file($pdf,"jpeg","3.jpg","","");
pdf_place_image ($pdf,$images_03,0,0,0.36);
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
//image_04
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 4");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_04=pdf_open_image_file($pdf,"jpeg","4.jpg","","");
pdf_place_image ($pdf,$images_04,0,0,0.36);
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
//image_05
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 5");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_05=pdf_open_image_file($pdf,"jpeg","5.jpg","","");
pdf_place_image ($pdf,$images_05,0,0,0.36);
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
//image_06
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 6");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_06=pdf_open_image_file($pdf,"jpeg","6.jpg","","");
pdf_place_image ($pdf,$images_06,0,0,0.36);
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
pdf_close($pdf);
pdf_delete($pdf);
echo "<A HREF=test.pdf>finished</A>";
reventlov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2006, 13h43   #2
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Pour le lien:
Code :
echo '<A HREF="test.pdf">finished</A>';
et si tu as le plugin adobe reader, sa devrait normalement lancé ton plugin et afficher le pdf dans le navigateur. Sinon tu peux aussi définir les header avec la fonction header().
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2006, 14h02   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Il te faudra demander à pdflib de ne pas écrire le fichier mais plutôt de l'envoyer au navigateur. En parallèle, tu devras utiliser la fonction header() avec le content-type correspondant aux fichiers PDF.

Exemple similaire avec Flash :
http://www.thisisnotawebsite.com/forumrnz/ming/index.php

Je n'écris pas le fichier SWF, je l'envoie directement au navigateur.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2006, 14h09   #4
Membre à l'essai
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 22
Points : 22
Envoyer un message via MSN à reventlov
Merci pour les reponse !

J'ai trouvé un bout de code qui est sensé faire cela et je l'ai adapté à mon script. Seulement dans le meilleur des cas, le navigateur n'ouvre pas un pdf mais affiche le contenu brut du buffer. Voici mon nouveau code, ce sont les dernières lignes qui posent problème (j'ai reduit le script a une page pour faire plus court):

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
30
31
$pdf = pdf_new();
pdf_open_file($pdf);
 
pdf_set_info($pdf, "Author", "Uwe Steinmann");
pdf_set_info($pdf, "Title", "Test for PHP wrapper of PDFLib 2.0");
pdf_set_info($pdf, "Creator", "See Author");
pdf_set_info($pdf, "Subject", "Testing");
 
//image_01
pdf_begin_page($pdf, 842, 595);
pdf_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 12, "host");
pdf_set_value($pdf, "textrendering", 1);
$images_01=pdf_open_image_file($pdf,"jpeg","1.jpg","","");
pdf_place_image ($pdf,$images_01,0,0,0.36);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
 
pdf_close($pdf);
 
//la fameuse mise en buffer
$buffer = PDF_get_buffer($pdf);
 
header("Content-type: application/pdf");
header("Content-Length: ".strlen($buffer));
header("Content-Disposition: inline; filename=essai.pdf");
echo $buffer ;
 
pdf_delete($pdf);
Je sent bien que je touche au but mais je patauge...
reventlov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2006, 17h54   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
J'ai copié tel quel ton code dans un fichier sur mon ordi, j'ai mis un fichier .jpg dans le répertoire et j'ai testé : ça marche.
Je suppose que tu n'as pas de plugin PDF qui va avec ton navigateur.
Pense à la balise [code] stp.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 11h14   #6
Membre à l'essai
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 22
Points : 22
Envoyer un message via MSN à reventlov
Bin là je pige pas... Mon fichier s'appelle index.php, il est seul dans son repertoire et je le lance avec le chemin direct dans la barre d'adresse du navigateur... J'ai fait comme toi un simple copier/coller du code... J'ai bien le plugin pdf puisque j'arrive à lire mon pdf dans le cas ou c'est un lien qui pointe sur un fichier réel... Le résultat le voici: des erreurs de header et le contenu brut du buffer... ???

Citation:
Warning: Cannot modify header information - headers already sent by (output started at /home.2/reventlo/www/testpdf/index.php:2) in /home.2/reventlo/www/testpdf/index.php on line 89

Warning: Cannot modify header information - headers already sent by (output started at /home.2/reventlo/www/testpdf/index.php:2) in /home.2/reventlo/www/testpdf/index.php on line 90

Warning: Cannot modify header information - headers already sent by (output started at /home.2/reventlo/www/testpdf/index.php:2) in /home.2/reventlo/www/testpdf/index.php on line 91
%PDF-1.3 %äãÏÒ 5 0 obj <> stream xœs áÒw3P04RIã2T)âr á0Žqendstream endobj 6 0 obj 29 endobj 10 0 obj <>] /Length 11 0 R >> stream ÿØÿàJFIFÈÈÿáExifMM*bj(1r2†‡iœÈÈÈAdobe Photoshop 7.02006:03:09 10:45:00   " k(&ñHHÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀZ€"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·

etc... etc...
reventlov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 11h29   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
À tout hasard : est-ce un vrai jpeg, pas un autre format camouflé ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 12h33   #8
Membre à l'essai
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 22
Points : 22
Envoyer un message via MSN à reventlov
Je suis une grosse cougourde... Mon script entier fait dans les 500 lignes... En vérifiant si je ne m'était pas planté sur le type de fichier image dans mes fonctions pdflib, je suis remonté en haut de mes lignes de code... Il y avait un retour chariot juste avant la balise de code php... Donc forcément header envoyait un message d'erreur et ne remplissait pas son office...

Désolé pour le dérangement et merci encore pour l'aide, même si la piste était tout autre, ça m'a fait regarder par hasard au bon endroit

Je suis tout honteux...
reventlov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 12h39   #9
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je suis un boulet aujourd'hui : c'était indiqué en clair dans le message d'erreur, j'aurais dû le voir...
Citation:
output started at /home.2/reventlo/www/testpdf/index.php:2
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 12h42   #10
Membre à l'essai
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 22
Points : 22
Envoyer un message via MSN à reventlov
Ouaiiii ! Je suis plus seul dans la bande !!!
reventlov 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 13h26.


 
 
 
 
Partenaires

Hébergement Web