0

我正在尝试优化dompdf来做一些有点奇怪的事情。因为它在我的服务器上,dompdf 正在从存储在服务器某处的 php/html 文件生成一个 pdf 文件(用于请求文件的客户端)。这很酷,因为它不会因 pdf 文件而使服务器陷入困境,但我遇到的问题是我希望有人能够导出一组 PDF 并以 zip 文件或类似文件的形式接收它们。

有没有办法让 dompdf 根据 php/html 文件的文件名将一组 PDF 文件导出到 zip 文件或其他东西,以便请求它的人可以下载它?

如果需要更多信息,请告诉我。

谢谢!!

4

1 回答 1

1

DOMPDF 一次只处理一个文件。但是您可以编写一个 PHP 脚本来接受文件列表,然后使用 DOMPDF 分别解析每个文件。由于 DOMPDF 可以将呈现的 PDF 作为字符串返回,因此您可以将每个文件写入临时目录,然后在完成后将结果存档。或者,如果您使用的是 dompdf.php,您可以使用 exec() 在类似的循环中处理每个 HTML 文档。

这是一个简单的示例,展示了一种方法来做你想做的事:

$files_html = array('docs/file1.html','docs/file2.html');
foreach ($files_html as $file) {
  exec('dompdf.php ' . $file);
}
$zip = new ZipArchive();
$zip->open('docs/pdfs.zip', ZipArchive::CREATE);
$files_pdf = glob('docs/*.pdf');
foreach ($files_pdf as $file) {
  $zip->addFile($file);
}
$zip->close();
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=pdfs.zip);
header('Content-Transfer-Encoding: binary');
readfile('docs/pdfs.zip');

论坛问题跟踪器中有一些关于使用 DOMPDF 批处理文件的讨论。

于 2011-06-20T18:04:11.670 回答