2017-05-29 8 views
1

現在のビューからPDFを作成するcreatePdfActionがあるextbase拡張があります。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から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

私はレスポンスヘッダーやそれに似たものを持っていませんが、リクエストヘッダ 'Accept-Encoding:gzip、deflate、br' –

+0

ですが、.htaccesで次のように入力するとContent-Encodingヘッダが得られます: ' Addtype application/pdf .pdf AddOutputFilterByType DEFLATEアプリケーション/ pdf' まだ変更はありません –

答えて

0

ありがとうJost

を追加すると、header('Content-Encoding: gzip')が問題を解決します。

+1

要求が 'Accept-Encoding'ヘッダに' gzip'が含まれている場合にのみヘッダが追加されていることを確認してください。そうしないと、ダウンロードが再度中断されます。また、gzipが受け入れられたエンコーディングでない場合は、ストリーム結果を解凍します。 – Jost

関連する問題