←前へ 目次↑ 次へ→

4.11. テーブル内での改ページ

Copper PDFはテーブルの行間、テーブルの行の途中(セルの途中)での改ページが可能です。 また、テーブルのヘッダとテーブルのフッタは各ページで繰り返し表示されます。

4.11.1. 改ページされない場所

テーブル内の次の場所では、どのような場合も改ページされることはありません。

従って、上記の部分に指定されたpage-break-after, page-break-before, page-break-inside は無視されます。 また、上記の規則が適用された結果、テーブルの行グループが存在する限り、 どのように改ページが発生する場合も、テーブルの行グループの一部が常に表示され、 ヘッダかフッタだけのテーブルが現れることはありません。

上記の部分がページの高さを超える場合は、テーブルがページの下端をはみ出します。 従って、適切なレイアウトとなるためには、テーブルのキャプションとヘッダとフッタの高さが、ページの高さに対して十分に小さいことが望ましいです。

4.11.2. page-break-XXXの適用

改ページに関する特性は行の間には通常のフローのブロックと同様に適用されます。 改ページに関する特性の指定は行グループの間にも適用されます。 ただし、強制改ページでleft, rightの指定は有効ではなく、効果はalwaysと同じになります。

セルに対するpage-break-insideは、行に適用されます。 同じ行内でautoとavoidが指定されたセルが競合する場合、avoidが優先されます。 すなわち、行に属するセルのうち1つでもavoidが指定された場合、行全体の中での改ページが禁止されます。 また、セルがrowspanで連結されている場合、セルが属する全ての行の内部で改ページが抑制されるのに加えて、行の間で page-break-afterおよびpage-break-before にavoidが指定されたものと見なされます。

セルに対するpage-break-afterおよび page-break-beforeは、行に適用されます。 この場合の優先順位は次の順になります。

always > avoid > auto

テーブルがページの先頭にあり、かつ改ページ禁止指定のために、ページの下端までの間で改ページできない場合は、行間の改ページ禁止を無視します。 この場合は、改ページが禁止された部分であっても改ページが発生します。

4.11.3. テーブル行内部(セル内部)での改ページ

テーブル行内に、page-break-inside: avoid;が指定されたセルがなく、 テーブル行がページの下端に差し掛かっている場合、そのテーブル行の分割が試みられます。 このとき、orphanswidowsが尊重され、 行に属する全てのセルが分割不可能な場合は、行全体が次のページに先送りされます。 1つでも分割可能なセルがあった場合は、行が分割されます。 この場合、他のセルに対してはorphanswidows を無視した分割が起こる可能性があります。

分割されたセルに対してはvertical-alignによる垂直アラインメントの指定が無効となり、 セルの内容は全てセルの上端につけられます。

4.11.4. デフォルトの改ページ禁止

HTMLのtd,th要素は、デフォルトで page-break-inside: avoid; が設定されています。 テーブルセル内の改ページを有効にするには、HTMLのtd, th要素に対して明示的に page-break-inside:: auto; を指定する必要があります。 (td, th以外の要素に対して display: table-cell; を指定したことによるテーブルセルは、この限りではありません。)

td, th {
  page-break-inside: auto;
}

上のスタイルシートをデフォルトのスタイルシートとして指定しておけば、 あらゆるページでテーブルセル内での改ページがされるようになります。


←前へ 目次↑ 次へ→
Copper PDF ©2012 Zamasoft. All rights reserved.