使用symfony框架导出多个pdf生成一个zip文件

问题描述:

Iam当前正在开发一个symfony应用程序,该应用程序需要能够将某些文档输出为pdf,而使用TCPDF完全没有问题。使用symfony框架导出多个pdf生成一个zip文件

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

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

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

说实话,我不知道为什么这不起作用。任何帮助是极大的赞赏!

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

+0

以及一个pdf's负载非常快,而不是noticibly长或任何东西。除此之外,我测试这只增加一个文件的档案,所以时间不应该是一个问题... – 2010-10-19 20:51:09

+0

,它使用任何pdf,而不是由symfony创建的任何pdf ... – 2010-10-19 21:56:31

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

这里是我的动作类内代码:

$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;