41

我正在使用 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");
4

12 回答 12

62

试试这个

$pdf->Output('kuitti'.$ordernumber.'.pdf', 'F');
于 2012-09-06T16:44:07.277 回答
28

这会将生成的 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');
于 2013-10-24T12:05:08.000 回答
19

$pdf->Output()接受第二个参数$dest,它接受单个字符。默认情况下,$dest='I'在浏览器中打开 PDF。

用于F保存到文件

$pdf->Output('/path/to/file.pdf', 'F')
于 2013-08-20T16:31:55.463 回答
17

唯一对我有用的东西:

// save file
$pdf->Output(__DIR__ . '/example_001.pdf', 'F');
exit();
于 2015-05-10T12:11:32.053 回答
8

对于存储文件有困难的人,路径必须一直通过根目录。例如,我的是:

$pdf->Output('/home/username/public_html/app/admin/pdfs/filename.pdf', 'F');
于 2015-02-19T20:09:18.733 回答
5

TCPDF 用于fopen()保存文件。因此,传递给 TCPDFOutput()函数的任何路径都应该是绝对路径。

如果您想保存到相对路径,请使用例如__DIR__全局常量(请参阅此答案)。

于 2015-04-06T12:44:33.423 回答
4

如果你仍然得到

TCPDF 错误:无法创建输出文件:myfile.pdf

您可以通过将 PDF 数据放入变量并将此字符串保存到文件中来避免 TCPDF 的文件保存逻辑:

$pdf_string = $pdf->Output('pseudo.pdf', 'S');
file_put_contents('./mydir/myfile.pdf', $pdf_string);
于 2018-03-07T08:26:11.917 回答
3

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(可选)工具>选项>常规选项卡>下载>总是问我在哪里保存文件

于 2013-10-11T11:16:47.723 回答
3
$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);
}
于 2015-09-17T10:58:00.273 回答
2
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
于 2021-10-24T18:46:11.643 回答
0

你可以试试;

$this->Output(/path/to/file);

所以对你来说,它会像;

$this->Output(/kuitit/);  //or try ("/kuitit/")
于 2012-09-06T16:42:46.323 回答
0

这对我有用,保存到temp_pdf根目录下的子目录():

$sFilePath = $_SERVER['DOCUMENT_ROOT'] . '//temp_pdf/file.pdf' ;
$pdf->Output( $sFilePath , 'F');

请记住使目录可写。

于 2020-08-21T00:17:36.420 回答