Compression dompdf-设置FE压缩级别时PDF文件已损坏
我有一个extbase扩展,其中我有一个createpdp,在其中我从当前视图创建了一个PDF 看起来有点像这样:Compression dompdf-设置FE压缩级别时PDF文件已损坏,compression,typo3,dompdf,extbase,Compression,Typo3,Dompdf,Extbase,我有一个extbase扩展,其中我有一个createpdp,在其中我从当前视图创建了一个PDF 看起来有点像这样: $html = $this->view->render(); $dompdf->setPaper('A4', 'portrait'); $dompdf->loadHtml(utf8_decode($html)); $dompdf->render(); $dompdf->stream($this->c
$html = $this->view->render();
$dompdf->setPaper('A4', 'portrait');
$dompdf->loadHtml(utf8_decode($html));
$dompdf->render();
$dompdf->stream($this->clearString('filename.pdf');
exit;
效果很好,但如果我在安装工具中将FE压缩级别设置为5,则创建的PDF文件现在已损坏,无法打开
我甚至试图关闭dompdf本身的压缩:
$dompdf->stream($this->clearString('filename.pdf',array("compress" => 0));
但这也不起作用
dompdf 0.8.0 类型3 8.7.1 php 7感谢:
添加
header('Content-Encoding:gzip')
解决了这个问题。检查HTTP响应的Content-Encoding
头。如果设置了压缩,则必须使用正确的压缩方法压缩流文件。如果未设置,则不得对其进行压缩。是否存在不匹配?可能TYPO3发送了一个Content Encoding:gzip
头,但是dompdf发送了一个未压缩的PDF,当浏览器试图解压缩它时会产生一个错误。我没有收到响应头或类似的消息-但是请求头Accept Encoding:gzip,deflate,br
但是如果我在.htacces中输入以下内容,我会得到内容编码标题:Addtype application/pdf.pdf AddOutputFilterByType DEFLATE application/pdf
但是仍然没有任何更改尝试在进行流式处理之前添加一个标题('Content-Encoding:gzip')
。还要下载流文件,检查它是否以某种方式压缩,并尝试确定压缩算法(可能是gzip)。如果添加头有效,则必须确保如果接受编码
不包含允许的算法gzip
,则文件以未压缩方式发送。确保仅当请求接受编码
-头包含gzip
时才添加头。否则下载将再次中断。另外,如果gzip不是可接受的编码,则解压缩流式传输结果。