印刷のためにうまくレンダリングされるようにプログラムでhtmlを生成します。複数のページにまたがる行を防ぐhtmlテーブルの印刷
複数のページにまたがる表を印刷する必要があります。これには、このような2つのページの上に広げるために、セルの内容を防止することなど、いくつかの課題を提起:
私は順番に<tr>
要素に対してdisplay: block
を使用していますthis answerとともに、page-break-inside:avoid
を使用していますthis answer内の溶液を、発見しましたそれらが垂直に分割されないようにします。
しかし、これによっても、行が互いに垂直に整列しないようになります。どうすれば修正できますか?
は、ここでそれがどのように見えるべきか(とブラウザが画面上にそれをレンダリングする方法)です:
そして、ここではそれが印刷のためにレンダリングするものです:
私はどのように改ページ時に垂直方向にセルを維持する能力を失うことなく、画面上に整列した状態でプリントアウトを整列させます。それはMacOS上でWebkit(Safari)で動作する必要があります。
ここに完全なhtmlコードがあります。
が<!DOCTYPE html><html><head><meta charset="utf-8"><style type="text/css">
th, td { border: 1px solid #aaa; }
@media print {
table, tr, td, th {
page-break-inside: avoid;
}
tr {
display: block;
page-break-before: auto;
}
}
</style></head>
<body>
<table style="width:40%">
<tr><th>A</th><th>B</th><th>C</th></tr>
<tr><td>more text<br>1<br>2<br>3<br>4<br>5<br></td><td>more text</td><td>more text</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
<tr><td>1<br>2<br>3<br>4<br>5<br>6<br></td><td>x</td><td>x</td></tr>
</table>
</body></html>
アップデート:私もthis solutionを試してみました
が使用するものは、個々の細胞が(希望されていません)、次のページの1の半分ずつ現れるかどうかを確認できるように、2つのページにまたがりますtable
の代わりにdiv