knp_snappy разрыв страницы в сгенерированном PDF

Я работаю над проектом Symfony2 для создания PDF из представления HTML. Ниже приведено из config.yml

knp_snappy:
pdf:
    enabled:    true
    binary:     /path/to/my/wkhtmltopdf
    options:
        no-stop-slow-scripts: ~
        enable-javascript: ~
        use-xserver: ~
        page-size: A4
        dpi: 300

Теперь я хочу знать, перекрывает ли DIV края страницы, если это так, добавьте разрыв страницы перед DIV. В настоящее время он отображается следующим образом.

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

Я пытался получить высоту DIV и сравнить ее с высотой страницы, но это не сработало.

Есть ли какое-либо решение, чтобы узнать, когда DIV перекрывается или автоматически разрывает страницу, когда что-то перекрывается?


person Alok Patel    schedule 08.10.2015    source источник


Ответы (2)


Попробуйте добавить стиль "page-break-inside" в свой div:

<div style="page-break-inside: avoid;">
    ... content ...
</div>

wkhtmltopdf использует движок webkit. Этот факт позволяет вам использовать стили для управления внешним видом вашего PDF.

person dmnptr    schedule 08.10.2015
comment
Я уже пробовал это, разрыв страницы внутри. Но кажется, что это не работает, возможно, он не может определить, когда конкретный DIV перекрывается. - person Alok Patel; 08.10.2015
comment
Это решило мою проблему. Я дал «авто» для разрыва страницы внутри, «избегать» работает как шарм! - person Alok Patel; 10.10.2015
comment
Я боролся с этим часами!!! это полностью сделало мой день. благодарю вас - person Splendonia; 29.06.2016
comment
К вашему сведению, я думаю, что это не сработает, если у родителя есть display: flex stackoverflow. ком/вопросы/34534231/ - person Waqleh; 07.05.2021

Я использую Bootstrap для стилизации макета. Для разрывов страниц работает только (для меня):

<p style="page-break-after: always;"/>
<br/>
person Damian    schedule 28.11.2018
comment
Что вы имеете в виду под не имеет эффекта? - person Emil Vikström; 28.11.2018
comment
@EmilVikström извините, я обновил свой ответ. Я неправильно скопировал свой ответ из своего кода. - person Damian; 29.11.2018