#pdf #yii2 #dompdf
Вопрос:
Я установил dompdf
с помощью composer
composer require dompdf/dompdf
в моем контроллере у меня есть это
use DompdfDompdf;
....
function actionPdf() {
$dompdf = new DOMPDF();
$dompdf->loadHtml('<h1>hello world</h1>');
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
}
но все, что я получаю, — это пустой PDF-файл. Когда я проверяю app.log
, я вижу это
2021-09-02 20:20:41 [127.0.0.1][262][-][error][yiiwebHeadersAlreadySentException] yiiwebHeadersAlreadySentException: Headers already sent in on line 0. in C:xampphtdocsyii2vendoryiisoftyii2webResponse.php:373
Stack trace:
#0 C:xampphtdocsyii2vendoryiisoftyii2webResponse.php(346): yiiwebResponse->sendHeaders()
#1 C:xampphtdocsyii2vendoryiisoftyii2baseApplication.php(398): yiiwebResponse->send()
#2 C:xampphtdocsyii2frontendwebindex.php(64): yiibaseApplication->run()
#3 {main}
Есть идеи, как это исправить? Спасибо
Комментарии:
1. Вы пытались добавить
// Output the generated PDF to Browser $dompdf->stream();
, вот документы: github.com/dompdf/dompdf#quick-start
Ответ №1:
Не уверен, что это правильно Yii
, но в моем случае это работает:
Обратите exit();
внимание на в конце.
// instantiate and use the dompdf class
$dompdf_options = new DompdfOptions();
$dompdf_options->setDpi(150);
$dompdf = new Dompdf($dompdf_options);
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4');
// Render the HTML as PDF
$dompdf->render();
$attachment=false;
$options=[
"Attachment" => $attachment
];
// Output the generated PDF to Browser
$dompdf->stream('Informe de vehículo', $options);
exit();
Я предполагаю, что проблема вызвана тем, как Yii отображает данные. Но, вызывая exit (), вы предотвращаете все это.