我正在使用 TCPDF 打印收据,然后使用 phpMailer 将其发送给客户,但我有一个问题:
我不知道如何将文件保存为pdf。
我试过这个:
// reset pointer to the last page
$pdf->lastPage();
//Close and output PDF document
$pdf->Output('kuitti'.$ordernumber.'.pdf', 'I');
$this->Output("kuitit");
试试这个
$pdf->Output('kuitti'.$ordernumber.'.pdf', 'F');
这会将生成的 pdf 文件存储在项目的自定义文件夹中
$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()
接受第二个参数$dest
,它接受单个字符。默认情况下,$dest='I'
在浏览器中打开 PDF。
用于F
保存到文件
$pdf->Output('/path/to/file.pdf', 'F')
唯一对我有用的东西:
// save file
$pdf->Output(__DIR__ . '/example_001.pdf', 'F');
exit();
对于存储文件有困难的人,路径必须一直通过根目录。例如,我的是:
$pdf->Output('/home/username/public_html/app/admin/pdfs/filename.pdf', 'F');
如果你仍然得到
TCPDF 错误:无法创建输出文件:myfile.pdf
您可以通过将 PDF 数据放入变量并将此字符串保存到文件中来避免 TCPDF 的文件保存逻辑:
$pdf_string = $pdf->Output('pseudo.pdf', 'S');
file_put_contents('./mydir/myfile.pdf', $pdf_string);
nick 的示例将其保存到您的本地主机。
但您也可以将其保存到本地驱动器。
如果您使用双反斜杠:
$filename= "Invoice.pdf";
$filelocation = "C:\\invoices";
$fileNL = $filelocation."\\".$filename;
$pdf->Output($fileNL,'F');
$pdf->Output($filename,'D'); // you cannot add file location here
PS在Firefox(可选)工具>选项>常规选项卡>下载>总是问我在哪里保存文件
$pdf->Output( "myfile.pdf", "F");
TCPDF 错误:无法创建输出文件:myfile.pdf
在include/tcpdf_static.php
静态函数中关于 2435 行的文件中,fopenLocal
如果我删除完整的“if 语句”,它可以正常工作。
public static function fopenLocal($filename, $mode) {
/*if (strpos($filename, '://') === false) {
$filename = 'file://'.$filename;
} elseif (strpos($filename, 'file://') !== 0) {
return false;
}*/
return fopen($filename, $mode);
}
require __DIR__ . '/vendor/autoload.php';
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$html = '<h2>Welcome toTcpdf</h2>';
$html.= '<p>Welcome toTcpdf</p>';
//$pdf->writeHTML($tbl, true, false, true, false, '');
$pdf->writeHTML($html, true, false, false, false, '');
$time = time();
$sFilePath = __DIR__ . '/upload/'.$time.'.pdf' ;
$pdf->Output( $sFilePath , 'F'); // Save to folder
//$pdf->Output( $sFilePath , 'I'); // view to browser
//$pdf->Output( $sFilePath , 'D'); // Download instant
this is working
你可以试试;
$this->Output(/path/to/file);
所以对你来说,它会像;
$this->Output(/kuitit/); //or try ("/kuitit/")
这对我有用,保存到temp_pdf
根目录下的子目录():
$sFilePath = $_SERVER['DOCUMENT_ROOT'] . '//temp_pdf/file.pdf' ;
$pdf->Output( $sFilePath , 'F');
请记住使目录可写。