2017-05-29 55 views
1

我有一個extbase擴展,其中我有一個createPdfAction,其中我從當前視圖創建PDF。dompdf - 設置FE compressionLevel時PDF文件損壞

看起來有點像這樣:

$html = $this->view->render(); 
    $dompdf->setPaper('A4', 'portrait'); 
    $dompdf->loadHtml(utf8_decode($html)); 

    $dompdf->render(); 
    $dompdf->stream($this->clearString('filename.pdf'); 
    exit; 

偉大的作品,但如果我設置的FE compressionLevel例如到5安裝工具 - 創建的PDF文件現在已損壞,無法打開。

我甚至試圖通過DOMPDF本身關閉壓縮:

$dompdf->stream($this->clearString('filename.pdf',array("compress" => 0)); 

但也沒有工作


DOMPDF 0.8.0

TYPO3 8.7.1

php 7

+0

檢查HTTP響應的「Content-Encoding」標頭。如果它設置了壓縮,則流式文件必須使用正確的壓縮方法進行壓縮。如果沒有設置,則不能壓縮。有不匹配嗎?也許TYPO3發出一個'Content-Encoding:gzip'頭文件,但dompdf發送一個未壓縮的PDF,當瀏覽器嘗試解壓縮時會產生錯誤。 – Jost

+0

我沒有迴應頭或類似的 - 但請求頭'接受編碼:gzip,deflate,br' –

+0

但是,如果我在.htacces中輸入以下內容,我將獲得Content-Encoding頭文件: Addtype application/pdf .pdf AddOutputFilterByType DEFLATE application/pdf' 但仍然沒有變化 –

回答

0

感謝Jost

添加header('Content-Encoding: gzip')解決了這個問題。

+1

確保僅在請求「Accept-Encoding」標頭包含'gzip'時才添加標頭。否則,下載將再次被破壞。另外,如果gzip沒有被接受的編碼,則解壓縮流結果。 – Jost