2010-10-19 38 views
0

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'))時,頁面會一直保持加載狀態,直到達到最大時間...

說實話,我不知道爲什麼這不起作用。任何幫助是極大的讚賞!

回答

0

那麼壓縮pdf文件(或任何文件)所需的時間將隨這些PDF文件的大小和數量而變化。所以你應該問的第一個問題是需要多長時間來處理這些問題?

+0

以及一個pdf's負載非常快,而不是noticibly長或任何東西。除此之外,我測試這隻增加一個文件的檔案,所以時間不應該是一個問題... – 2010-10-19 20:51:09

+0

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

0

嘗試在測試時使用非常小的PDF文件,如果仍然存在問題,請將PHP超時變量設置得更高以運行測試。

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;