J'utilise TCPDF pour imprimer un reçu, puis l'envoyer au client avec phpMailer, mais j'ai un problème:
Je ne sais pas comment enregistrer le fichier en pdf.
J'ai essayé ça:
// reset pointer to the last page
$pdf->lastPage();
//Close and output PDF document
$pdf->Output('kuitti'.$ordernumber.'.pdf', 'I');
$this->Output("kuitit");
essaye ça
$pdf->Output('kuitti'.$ordernumber.'.pdf', 'F');
cela stocke le fichier pdf généré dans votre dossier personnalisé de votre projet
$filename= "{$membership->id}.pdf";
$filelocation = "D:\\wamp\\www\\project\\custom";//windows
$filelocation = "/var/www/project/custom"; //Linux
$fileNL = $filelocation."\\".$filename;//Windows
$fileNL = $filelocation."/".$filename; //Linux
$this->pdf->Output($fileNL, 'F');
$pdf->Output()
prend un deuxième paramètre $dest
, qui accepte un seul caractère. Le défaut, $dest='I'
ouvre le PDF dans le navigateur.
Utilisez F
pour enregistrer dans un fichier
$pdf->Output('/path/to/file.pdf', 'F')
La seule chose qui a fonctionné pour moi:
// save file
$pdf->Output(__DIR__ . '/example_001.pdf', 'F');
exit();
Pour ceux qui ont des difficultés à stocker le fichier, le chemin doit être tout au long de la racine. Par exemple, le mien était:
$pdf->Output('/home/username/public_html/app/admin/pdfs/filename.pdf', 'F');
$pdf->Output( "myfile.pdf", "F");
ERREUR TCPDF: Impossible de créer le fichier de sortie: monfichier.pdf
Dans le include/tcpdf_static.php
fichier d'environ 2435 lignes dans la fonction statique fopenLocal
si je supprime "l'instruction if" complète, cela fonctionne très bien.
public static function fopenLocal($filename, $mode) {
/*if (strpos($filename, '://') === false) {
$filename = 'file://'.$filename;
} elseif (strpos($filename, 'file://') !== 0) {
return false;
}*/
return fopen($filename, $mode);
}
Si vous obtenez toujours
ERREUR TCPDF: Impossible de créer le fichier de sortie: monfichier.pdf
vous pouvez éviter la logique d'enregistrement des fichiers de TCPDF en mettant PDF données dans une variable et en enregistrant cette chaîne dans un fichier:
$pdf_string = $pdf->Output('pseudo.pdf', 'S');
file_put_contents('./mydir/myfile.pdf', $pdf_string);
l'exemple de Nick l'enregistre sur votre hôte local.
Mais vous pouvez également l'enregistrer sur votre disque local.
si vous utilisez des barres obliques inverses:
$filename= "Invoice.pdf";
$filelocation = "C:\\invoices";
$fileNL = $filelocation."\\".$filename;
$pdf->Output($fileNL,'F');
$pdf->Output($filename,'D'); // you cannot add file location here
P.S. Dans Firefox (facultatif) Outils> Options> onglet Général> Télécharger> Toujours me demander où enregistrer les fichiers
TCPDF utilise fopen()
pour enregistrer les fichiers. Tout chemin transmis à la fonction Output()
de TCPDF doit donc être un chemin absolu.
Si vous souhaitez enregistrer dans un chemin relatif, utilisez par exemple le __DIR__
constante globale (voir cette réponse ).
Vous pouvez essayer;
$this->Output(/path/to/file);
Donc pour vous, ce sera comme;
$this->Output(/kuitit/); //or try ("/kuitit/")