创建pdf后清理

时间:2012-07-08 18:06:38

标签: php pdf-generation fpdf html2pdf

我正在使用html2fpdf生成pdf文件。

$pdf = new HTML2FPDF();
$pdf->HTML2FPDF("P","mm","A4");
$pdf->AddPage();
$pdf->WriteHTML($html);
$pdf->output('sample.pdf');

此示例效果很好。但是:

如何在输出后删除pdf?我只想在我的工具中有链接,用户可以下载pdf,然后在服务器上删除它。

如何在生成pdf后'清理'?

2 个答案:

答案 0 :(得分:3)

您可以使用名为unlink()

的PHP文件删除功能

使用生成的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。

<强>参考