使用symfony框架导出多个pdf生成一个fly作为zip

时间:2010-10-19 20:21:36

标签: pdf symfony1 zip

Iam目前正在开发一个symfony应用程序,它需要能够以pdf格式输出一些文档,使用TCPDF完全没问题。

我现在尝试做的是生成一个zip文件,其中包含动态生成的这些pdf中的一个或多个。我基本上做的是(使用php的)zip库:

1。)创建一个新的zip存档。 2.)添加所有PDF 3.)输出生成的zip。

奇怪的是,当在不同的服务器上使用一些演示pdf时,这是有效的。但是当我尝试导出我自己的文档(通过url拼写,例如url_dor('documents / pdf?id / 1'))时,页面会一直保持加载状态,直到达到最大值...

说实话,我根本不知道为什么这不起作用。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

压缩pdfs(或任何文件)所需的时间将随着这些PDF的大小和数量而变化。所以你应该问的第一个问题是处理这些问题需要多长时间?

答案 1 :(得分:0)

在测试时尝试使用非常小的PDF文件,如果仍有问题,请将PHP超时变量设置得更高以运行测试。

答案 2 :(得分:0)

这是我在动作类中的代码:

$this->setLayout(false);
$tmpFileName = tempnam("/tmp", "some_prefix_");
$zip = new ZipArchive();
$zip->open($tmpFileName, ZipArchive::CREATE);
foreach ($files as $file) {
    $real_file = $file->getAbsoluteFilePath();
    $zip->addFile($real_file, 'sub_folder_name/' . $file->getTitle() . '.pdf');
}
$zip->close();
$this->getResponse()->clearHttpHeaders();
$this->getResponse()->setContent(file_get_contents($tmpFileName));
unlink($tmpFileName);
$this->getResponse()->setHttpHeader('Content-Type', 'application/zip');
$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename=archive_name.zip');
return sfView::NONE;