1

Ce sujet est issu d'une discussion ayant dérivé sur deux thèmes distincts. Pour vous rendre sur le sujet d'origine, merci de cliquer sur ce lien
avatar
Ben, bouh, quoi :D

2

Bonsoir,

En voulant generer un fichier PDF sans affichage dans le navigateur (V3.18), j'ai utilisé les consiels du forum, a savoir:
----------
la méthode Output ne gère directement que 2 cas :

l'envoie au navigateur pour affichage : $html2df->Output('mon_fichier.pdf');
le fichier s'appelle alors 'mon_fichier.pdf'

la récupération du contenu du pdf : $content = $html2df->Output('mon_fichier.pdf', true);
le nom du fichier n'a alors aucune importance, et le pdf est contenu dans $content
-----------

Mais achaque fois que je met TRUE, le PDF est bien genéré mais ACROBAR READER s'ouvre avec une erreur fichier corrompu


En lisant cette autre info :
-----
Dans HTML2pdf pour quelle raison l'option F n'est pas utiliser de fpdf pour faciliter la chose ?

/*
Destination où envoyer le document. Le paramètre peut prendre les valeurs suivantes :

* I : envoyer en inline au navigateur. Le plug-in est utilisé s'il est installé. Le nom indiqué dans name est utilisé lorsque l'on sélectionne "Enregistrer sous" sur le lien générant le PDF.
* D : envoyer au navigateur en forçant le téléchargement, avec le nom indiqué dans name.
* F : sauver dans un fichier local, avec le nom indiqué dans name (peut inclure un répertoire).
* S : renvoyer le document sous forme de chaîne. name est ignoré.
*/
-----


J'ai fais la modif suivante dans la fonction Output() de la class HTML2PDF :

//return $this->pdf->Output($nom_fichier, 'S'); <---------- Origine
return $this->pdf->Output($nom_fichier, 'F'); <--------- Modifié (S --> F)


Et la c'est bon !!!

$html2pdf->Output('badge/badge2.pdf',true);

Phil

3

normal, ce que tu cherches à faire, c'est enregistrer directement ton fichier PDF sur ton serveur. la méthode Output e" HTML2PDF ne permet que 2 cas :

$html2pdf->Output('mon_fichier.pdf'); => envoie le contenu du PDF au client, avec comme nom 'mon_fichier.pdf' dans les headers

$content = $html2pdf->Output('mon_fichier.pdf', true); => sauvegarde le contenu du pdf dans la variable $content, le fichier n'est ni envoyé au client, ni sauvegardé dans un fichier sur le serveur.

ce deuxième cas sert par exemple pour envoyer par email directement le contenu d'un PDF généré, sans passer par l'étape inutile de l'écriture d'un fichier sur le serveur. Si vraiment tu souhaites ensuite enregistrer le fichier sur le serveur, il suffit de faire un file_put_contents('./rep/fichier.pdf', $content);

j'ai fais exprès de limiter html2pdf à ces 2 cas au lieu des 4 que génère fpdf car je trouve que ca peut être dangereux de permettre à une librairie externe d'enregistrer directement des fichiers sur le serveur, sans vérification.

après, si vraiment tu souhaites faire enregistrer le fichier par fpdf, tu peux toujours utiliser la commande directement, sans avoir à modifier la méthode Output de HTML2PDF :

$html2pdf->pdf->Output('badge/bagde2.pdf', 'F');
Ancien pseudo : lolo

4

juste par curiosité, à quoi sert le premier paramètre de la méthode "Output" quand le second vaut true ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

à rien du tout smile
Ancien pseudo : lolo

6

oki, alors toujours par curiosité : pourquoi avoir conçu la méthode pour, dans ce cas, être obligé de spécifier un paramètre qui ne sert à rien en plus d'un paramètre supplémentaire qui sert à changer de mode ?

je veux dire, il aurait pu être plus logique à mon sens d'inverser l'ordre des paramètres pour avoir html2pdf->Output (false, 'fichier.pdf') et $result = html2pdf->Output (true), ou même plus simple : html2pdf->Output ('fichier.pdf') et $result = html2pdf->Output ()
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

ben pour être franc, je sais pas smile

j'aurais du en effet faire ce choix là dès le début. Le problème c'est que maintenant il est trop tard pour changer : si quelqu'un ne spécifiait pas de nom de fichier, ca envoyait quand même le fichier au navigateur.Si je change ce fonctionnement je risque de me faire engueuler par les utilisateurs.

Donc malheureusement ca restera maintenant comme ca...
Ancien pseudo : lolo

8

ok smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

bon, ben enfin de compte, je vais en fin de compte changer ma methode output pour qu'elle colle plus avec celle de fpdf...

merci pour ta réflexion Zeph wink
Ancien pseudo : lolo