Dompdf записывается поверх других элементов html — Laravel 6 — PHP 8

#php #laravel #api #laravel-6 #dompdf

#php #laravel #API #laravel-6 #dompdf

Вопрос:

Я пишу функцию для создания и отображения PDF-файла с использованием Dompdf в проекте Laravel 6 с использованием PHP 8. Я пробовал использовать множество руководств и даже официальную документацию от GitHub для обычной версии Dompdf и ее оболочки для Laravel. Вот мой код функции генератора pdf:

 private function generate_pdf(){
    $html = '
        <html>
            <body>
                <h1>Hello Dompdf</h1>
                <h2>MDF</h2>
            </body>
        </html>
    ';
    $pdf = PDF::loadHTML($html);
    return $pdf->stream('welcome.pdf');
}
 

Это работает нормально, но вот результат функции:

введите описание изображения здесь

Как вы можете видеть, элементы накладываются друг на друга. Я искал ответы, но не могу найти ничего связанного. Кто-нибудь знает, почему это происходит?

Ответ №1:

Если у кого-то снова возникнет эта проблема, я нашел решение, и это худшее, что может быть:

 private function generate_pdf(){
    $html = '
        <html>
            <body>
                <h1>Hello Dompdf</h1><br/><br/>
                <h2>MDF</h2>
            </body>
        </html>
    ';
    $pdf = PDF::loadHTML($html);
    return $pdf->stream('welcome.pdf');
}
 

Просто добавьте
элементы к каждому элементу, чтобы предоставить правильное пространство. Это неприятное решение, но оно работает.

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

1. используйте теги div и выровняйте свои html-компоненты используйте div для разделения html на разделы, тогда у вас не будет таких проблем

2. Divs вообще не работал, он просто создал контейнер блочного типа, а затем нарисовал его поверх любого другого элемента (тот же случай, который я продемонстрировал). Выравнивание работало нормально, но это не слишком помогло моей задаче. Тег <br/> работал хорошо… Интересно, возникает ли эта проблема только на моем компьютере, потому что я установил что-то не так, или отсутствует зависимость, или есть кто-то еще с такой же проблемой 🤔.

Ответ №2:

Проблема заключается в совместимости с PHP 8 самим собой. У меня была такая же проблема, и понижение версии до PHP 7.4 сработало на моем сервере. Не уверен, в чем может быть несовместимость, но сразу после обновления to PHP 8.0 DOMPDF перестал правильно интерпретировать HTML и начал размещать элементы друг на друге.