入出力にstdinとstdoutを使用して、Javaアプリケーションにwkhtmltopdf(0.12.1)を埋め込みます。 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
は1ページにしか及ばないため、2番目のヘッダーは適切にレンダリングされていることに注意してください。
他の人々も同様の問題を抱えています。 --header-html
または--header-spacing
の追加など、--margin-top
オプションを使用している場合、これに対するいくつかの回避策がありますが、これらのオプションは繰り返されるthead
には影響しません。何か案は?
私はこれらの3つの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;
}