Whtmltopdf повторяет совпадение содержимого заголовков

Мы встраиваем 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. Любые идеи?

Ответы

Ответ 1

Я решил это с помощью этих трех правил CSS:

thead { display: table-header-group; }
tfoot { display: table-row-group; }
tr { page-break-inside: avoid; }

Ответ 2

вы решите эту проблему, добавив следующий css.

   tr {
         page-break-inside: avoid;
      }

Ответ 3

Я обнаружил, что tr { page-break-inside: avoid; } работает до точки, но не тогда, когда мои заголовки охватывают несколько строк. Поскольку я хотел сохранить раздел thead, моим решением было отключить повтор.

thead, tfoot {
  display: table-row-group;
}