Генерация PDF в Codeigniter 4 — выводит странные символы

#php #tcpdf #codeigniter-4

#php #tcpdf #codeigniter-4

Вопрос:

Я создаю PDF-документ в своем приложении Codeigniter4.

Я установил TCPDF через composer: 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');

На выходе я получаю странные символы. Похоже, двоичное содержимое документа передается в браузер, игнорируя тип содержимого заголовка. Я не уверен, но я думаю, что это проблема Codeigniter 4, потому что в CI3 этот код работает, также не используя CI, просто простой PHP дает мне желаемый результат.

Что не так с CI4, есть ли какая-то опция для включения?

Комментарии:

1. можете ли вы проверить, какие заголовки вы получаете в этом выводе? Возможно, вывод Codeigniter перезаписывает его и устанавливает в качестве вывода по умолчанию. Если это так, возможно, вы можете сами установить правильные заголовки с помощью этого: codeigniter.com/user_guide/outgoing /…

Ответ №1:

Как предложил @marcogmonteiro, я должен заставить CI выводить правильные заголовки:

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