Ответ 1
Я решил это с помощью этих трех правил CSS:
thead { display: table-header-group; }
tfoot { display: table-row-group; }
tr { page-break-inside: avoid; }
Мы встраиваем wkhtmltopdf (0.12.1) в Java-приложение, используя stdin и stdout для ввода/вывода. Мы хотим иметь несколько (разных) заголовков в нашем PDF файле, поэтому вместо использования параметра --header-html
мы используем thead
, который повторяется на нескольких страницах. Вот небольшой пример HTML:
<!DOCTYPE html>
<html>
<body>
<table style="page-break-after: always;">
<thead>
<tr>
<th>My first header</th>
</tr>
</thead>
<tbody>
<tr>
<td>First content</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>My second header</th>
</tr>
</thead>
<tbody>
<tr>
<td>Second content</td>
</tr>
</tbody>
</table>
</body>
</html>
Пока все хорошо. Проблемы возникают, когда контент охватывает несколько страниц. Затем заголовок отображается поверх содержимого, перекрывая его. Пример html и PDF. Обратите внимание, что второй заголовок отображается просто отлично, поскольку tr
охватывает только одну страницу.
У других людей были подобные проблемы. Для этого используются некоторые способы обхода, когда вы используете параметр --header-html
, например добавление --header-spacing
или --margin-top
, но эти параметры не влияют на повторяющийся thead
. Любые идеи?
Я решил это с помощью этих трех правил CSS:
thead { display: table-header-group; }
tfoot { display: table-row-group; }
tr { page-break-inside: avoid; }
вы решите эту проблему, добавив следующий css.
tr {
page-break-inside: avoid;
}
Я обнаружил, что tr { page-break-inside: avoid; }
работает до точки, но не тогда, когда мои заголовки охватывают несколько строк. Поскольку я хотел сохранить раздел thead
, моим решением было отключить повтор.
thead, tfoot {
display: table-row-group;
}