Nous intégrons wkhtmltopdf (0.12.1) dans une application Java, en utilisant stdin et stdout pour les entrées/sorties. Nous voulons plusieurs en-têtes (différents) dans notre PDF, donc au lieu d'utiliser le --header-html
option nous utilisons un thead
, qui est répété sur plusieurs pages. Voici un petit exemple 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>
Jusqu'ici tout va bien. Des problèmes surviennent lorsque le contenu s'étend sur plusieurs pages. L'en-tête s'affiche ensuite au-dessus du contenu, en le chevauchant. Exemple html et PDF . Notez que le deuxième en-tête est rendu très bien, car le tr
ne couvre qu'une page.
D'autres personnes ont eu des problèmes similaires. Il existe quelques solutions pour cela lorsque vous utilisez le --header-html
option, comme l'ajout de --header-spacing
ou --margin-top
, mais ces options n'ont aucun effet sur le thead
répété. Des idées?
Je l'ai résolu avec ces trois règles CSS:
thead { display: table-header-group; }
tfoot { display: table-row-group; }
tr { page-break-inside: avoid; }
vous résolvez ce problème en ajoutant le CSS suivant.
tr {
page-break-inside: avoid;
}
J'ai trouvé tr { page-break-inside: avoid; }
a fonctionné jusqu'à un certain point, mais pas lorsque mes en-têtes s'étalaient sur plusieurs lignes. Comme je voulais garder ma section thead
, ma solution était de désactiver la répétition.
thead, tfoot {
display: table-row-group;
}