tcpdf组件目前应用得非常广泛,但是对于如何把生成的pdf文件自动保存在服务端却很少有人提及。让我们先来看看标准输出代码:
//服务器存档模式
$pdf->Output('output.pdf','F');
实际上这段代码经常会抛出一个 TCPDF ERROR: Unable to create output file: output.pdf 的错误。如果我们切换成其他模式,一点问题都没有,例如:
//下载模式
$pdf->Output('output.pdf','D');
//浏览器模式
$pdf->Output('output.pdf','I');
解决方法其实很简单,在Output前添加一个函数ob_clean(),代码如下:
//服务器存档模式
ob_clean();
$pdf->Output('output.pdf','F');
//如果需要自定义路径,则先添加根目录地址
ob_clean();
$pdf->Output($_SERVER['DOCUMENT_ROOT'] .'output.pdf', 'F');
//存档在根目录
$pdf->Output($_SERVER['DOCUMENT_ROOT'].'/MyFolder/output.pdf', 'F');
//存档在自定义文件夹MyFolder中;
之前还曾搜索到一个解决方案,在pdf文档生成前,先添加ob_start(),在Output输出前再加ob_end_clean();也能做到服务器存档的效果。