2011-06-16 50 views
0

我想優化dompdf做一些有點奇怪的事情。因爲它在我的服務器上,所以dompdf從存儲在服務器某處的php/html文件生成一個pdf文件(用於請求文件的客戶端)。這很酷,因爲它不會使服務器停止運行pdf文件,但我遇到的問題是我希望某人能夠導出一組PDF文件並以zip文件或類似的方式接收它們。dompdf定製問題

有沒有辦法讓dompdf根據php/html文件的文件名將一組PDF文件導出到一個zip文件或其他東西,以便請求它的人可以下載它?

讓我知道是否需要更多信息。

謝謝!

+1

dompdf允許將PDF輸出爲二進制數據。然後,您可以將其添加到zip中並重復此操作,直到處理完所有文件組。 – hakre 2011-06-16 21:45:00

+1

你可以在迭代中導出文件,然後將它們壓縮? – 2011-06-16 21:45:33

+0

據我所知,dompdf不做任何導出,它只是當場將文件轉換爲PDF ......我不想壓縮html文件。 – 2011-06-16 22:03:12

回答

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'); 

裏有forumissue tracker使用DOMPDF來批量處理文件的一些討論。