在Codeigniter 4中生成PDF-输出奇怪的字符

问题描述

我正在Codeigniter4应用程序中生成PDF文档。

我通过作曲者composer require tecnickcom/tcpdf

安装了TCPDF

我的pdf是通过标准方式创建的,在那里没有什么幻想。

$pdf = new TCPDF('P','mm','A4',true,'UTF-8');
$pdf->SetMargins(10,10,10);
$pdf->SetTextColor(33,65,108);
$pdf->SetAutoPageBreak(false);
$pdf->AddPage();
...

除非我尝试输出PDF,否则一切都会正常进行。

$pdf->Output("file.pdf",'D');为我提供了下载文件的选项,它是我所希望的正确的PDF文件。

但是,如果我尝试直接在浏览器中输出它:

$pdf->Output("file.pdf",'I');

在输出中,我得到了奇怪的字符。看起来文档二进制内容已回显到浏览器,而忽略了标题Content-Type。 我不确定,但是我认为这是Codeigniter 4的问题,因为在CI3中,此代码有效,也未使用CI,仅普通的PHP即可提供所需的结果。

CI4怎么了,有一些选项可以打开吗?

解决方法

如@marcogmonteiro所建议,我必须强制CI输出正确的标头:

$this->response->setHeader("Content-Type","application/pdf");
$pdf->Output("file.pdf",'I');

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...