Page 1 sur 1
passer un pdf d'une page à une autre
Posté : 16 juil. 2007, 15:35
par d0m
Bonjour,
j'ai une page php qui m'affiche toutes sortes de données et graphiques.
Je voudrais lorsque l'on clique sur un bouton, créer un pdf qui met en pages différement de l'affichage ces données et graphiques.
Je peux passer par un formulaire mais cela m'obligerai à passer toutes les données en paramètre, ou recharger la page mais cette page prends plusieurs secondes à s'afficher car il y a une interrogation de fichiers assez longue.
Y'a t'il un moyen de lancer une fonction php (celle qui créerait mon pdf avec les données déjà calculées sur la page) sans recharger la page ou suis-je condamné à passer toutes mes données en paramètre?
Posté : 16 juil. 2007, 15:46
par Sékiltoyai
Les données sont de quelle taille approximativement ? Et l'hébergement peut supporter quelles charges approximativement là encore ?
Tu ne peux pas créer le pdf à la génération de la page ?
Posté : 16 juil. 2007, 15:51
par d0m
Les données sont de quelle taille approximativement ? Et l'hébergement peut supporter quelles charges approximativement là encore ?
c'est une application intranet avec du materiel puissant, donc les charges ne sont pas vraiment un problème. Les données sont variables elles peuvent aller du très petit au très grand.
Tu ne peux pas créer le pdf à la génération de la page ?
Si bien sûr, mais j'aurais voulu le faire que si cela aurait été nécessaire, mais vu la solution la plus efficace serait de le générer à la création de la page c'est vrai.
Posté : 16 juil. 2007, 16:02
par Sékiltoyai
Très grand, ca veut dire quoi exactement ? Ca peut dépasser le Gigaoctet ?
Tu dis que les données sont récupérées dans des fichiers, est ce que php a un traitement à faire avant l'affichage (genre générer une image ou les graphiques à partir de données, ou bien faire des calculs à partir des données initiales) ?
Posté : 16 juil. 2007, 16:10
par d0m
oui il y a un traitement :
interoger des bases (rrd, mysql), parser des fichiers textes, créer dynamiquement des graphiques... bref ca peut être assez long et il faut absolument que j'évite de refaires ces traitements.
Posté : 16 juil. 2007, 16:15
par Sékiltoyai
Ce que tu peux faire, c'est mettre ces données en session, ou bien les écrire toi même dans des fichiers (les sessions c'est tout de même plus pratique...), ou, et c'est pour cela que je te demandais la taille de tes données, tu peux aussi les mettre dans la ram si les données sont de l'ordre de la dizaine de méga octets ou bien de la centaine de mégaoctets (mais dans ce cas, tu ne pourra pas connecter la masse d'utilisateurs en même temps...).
Posté : 17 juil. 2007, 10:17
par d0m
est il possible de créer le pdf (via fpdf) et de le passer d'une maniere quelconque dans une autre page qui s'occcupera de l'afficher?
*edit : il suffit de le serialiser et de le passer par un formulaire... j'étais passé à coté
pour ceux que ça interesserait :
<?php $pdf_serialise = addslashes(urlencode(serialize($pdf))); ?>
<form name="autre_page" METHOD="POST" action="autre_page.php">
<INPUT TYPE="HIDDEN" NAME="pdf" VALUE="<? echo $pdf_serialise; ?>">
<INPUT TYPE="SUBMIT" name="transmettre_pdf" value=" transmettre pdf "
</form>
Posté : 17 juil. 2007, 17:39
par Sékiltoyai
Non, c'est une erreur de faire comme cela, tu surcharges la bp pour rien. Stocke ton pdf en session, ou écris le sur le disque.
Sinon, à part ca, ton problème est résolu ?
Posté : 18 juil. 2007, 08:52
par d0m
Non, c'est une erreur de faire comme cela, tu surcharges la bp pour rien. Stocke ton pdf en session, ou écris le sur le disque.
je profite de cette remarque pour une petite question, en quoi est ce mieux de stocker le pdf en session que de le passer par un formulaire?
Sinon oui mon problème est résolu merci.
Posté : 18 juil. 2007, 14:53
par Sékiltoyai
Si tu le passe en formulaire, tu envoies plusieurs mégaoctets aller-retour-aller (lors de l'affichage, lors de la soumission, et lors du téléchargement du fichier), à chaque appel de la page, c'est considérable, surtout lorsque le fichier n'est pas forcément téléchargé ensuite...
En le passant par session, tu le stockes sur le disque dur du serveur, tu économises une bonne partie de ta bande passante, qui est limitée par rapport à l'espace de stockage.