1

我正在用 html2fpdf 生成一个 pdf 文件。

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

此示例效果很好。但:

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

生成pdf后如何“清理”?

4

2 回答 2

3

您可以使用 PHP 的文件删除功能,称为unlink()

使用生成的 PDF 文件(或任何文件)的完整路径调用此函数,PHP 将删除该文件。

http://php.net/manual/en/function.unlink.php


您不必在用户下载文件后立即删除该文件。您可以轻松地将所有生成的文件放在一个中央文件夹中,并让 cron 作业执行更通用的清理脚本,只需删除旧文件即可。

一种方法可能是 -

  • 使用 扫描文件夹的内容scandir()
  • 循环遍历其文件foreach..
  • 使用 . 检查每个文件的创建时间filemtime()
  • 如果创建时间超过一小时前,请使用unlink().

因为您是在 PHP 代码中自己生成 PDF 文件所以我没有提到权限考虑。这里最好提一下,您的 PHP 必须具有正确的文件系统权限才能对文件系统执行任何操作。您正在创建一个 PDF 文件,因此可以安全地假设您具有对文件系统进行更改的正确权限,但如果您计划unlink()在其他脚本中使用此功能,请确保您正在处理的文件具有正确的权限集。

于 2012-07-08T18:09:16.573 回答
2

如果您不将“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 或其他格式结尾。

发送标头由 fpdf/tcpdf 完成。简而言之:您不必进行任何清理,因为服务器上没有存储 pdf 文件。

如果您想知道名称的含义,请尝试保存 pdf 文件。保存时的推荐名称为 sample.pdf。

参考

于 2012-07-09T00:17:52.967 回答