我正在使用html2fpdf生成pdf文件。
$pdf = new HTML2FPDF();
$pdf->HTML2FPDF("P","mm","A4");
$pdf->AddPage();
$pdf->WriteHTML($html);
$pdf->output('sample.pdf');
此示例效果很好。但是:
如何在输出后删除pdf?我只想在我的工具中有链接,用户可以下载pdf,然后在服务器上删除它。
如何在生成pdf后'清理'?
答案 0 :(得分:3)
您可以使用名为unlink()
使用生成的PDF文件(或任何文件)的完整路径调用此函数,PHP将删除该文件。
http://php.net/manual/en/function.unlink.php
用户下载后,您不一定要立即删除该文件。您可以轻松地将所有生成的文件放在一个中央文件夹中,并让cron作业执行更通用的清理脚本,只需删除旧文件。
一种方法可能是 -
scandir()
扫描文件夹的内容。foreach
循环中迭代其文件.. filemtime()
检查每个文件的创建时间。unlink()
删除文件。因为您是在 PHP代码中自己生成PDF文件,所以我没有提及权限考虑因素。这里提到一个好的地方,你的PHP必须具有正确的文件系统权限才能对文件系统执行任何操作。您正在创建一个PDF文件,因此可以安全地假设您具有更改文件系统的正确权限,但如果您打算在其他脚本中使用此unlink()
函数,请确保您正在处理的文件具有正确的权限设置。
答案 1 :(得分:1)
如果您没有在输出功能中添加“F”标志,则根本不会在服务器上存储任何pdf文件:
$pdf->output('sample.pdf', 'F'); //stores PDF on server
在您的情况下,脚本本身就像一个实际的pdf文件。因此,创建指向脚本的链接就像是指向pdf的链接,只是每次请求脚本时都会创建PDF。要告诉浏览器它是PDF,content-type
响应标头必须设置为application/pdf
:
content-type: application/pdf
通过这种方式,即使URL以.php
结尾,黑客也知道它是pdf。您可以使用重写引擎使其以pdf或其他任何方式结束。
发送标题由fpdf / tcpdf完成。简而言之:您不必进行任何清理,因为服务器上没有存储pdf文件。
如果您想知道名称是什么,请尝试保存pdf文件。保存时推荐的名称为sample.pdf。
<强>参考强>: