在 Codeigniter 4 中生成 PDF - 输出奇怪的字符
Generating PDF in Codeigniter 4 - outputs weird characters
我正在我的 Codeigniter4 应用程序中生成 PDF 文档。
我通过 composer 安装了 TCPDF:composer require tecnickcom/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');
在输出中我得到了奇怪的字符。看起来文档二进制内容被回显到浏览器,忽略了 header Content-Type。
我不确定,但我认为这是一个 Codeigniter 4 问题,因为在 CI3 中这段代码有效,也没有使用 CI,只是简单的 PHP 给了我想要的结果。
CI4 有什么问题,有什么选项可以打开吗?
正如@marcogmonteiro 所建议的,我必须强制 CI 输出正确的 headers:
$this->response->setHeader("Content-Type", "application/pdf");
$pdf->Output("file.pdf", 'I');
我正在我的 Codeigniter4 应用程序中生成 PDF 文档。
我通过 composer 安装了 TCPDF:composer require tecnickcom/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');
在输出中我得到了奇怪的字符。看起来文档二进制内容被回显到浏览器,忽略了 header Content-Type。 我不确定,但我认为这是一个 Codeigniter 4 问题,因为在 CI3 中这段代码有效,也没有使用 CI,只是简单的 PHP 给了我想要的结果。
CI4 有什么问题,有什么选项可以打开吗?
正如@marcogmonteiro 所建议的,我必须强制 CI 输出正确的 headers:
$this->response->setHeader("Content-Type", "application/pdf");
$pdf->Output("file.pdf", 'I');