Dompdf выдает мне пустой pdf-файл

#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 (), вы предотвращаете все это.