Copper PDFはテーブルの行間、テーブルの行の途中(セルの途中)での改ページが可能です。 また、テーブルのヘッダとテーブルのフッタは各ページで繰り返し表示されます。
テーブル内の次の場所では、どのような場合も改ページされることはありません。
従って、上記の部分に指定されたpage-break-after, page-break-before, page-break-inside は無視されます。 また、上記の規則が適用された結果、テーブルの行グループが存在する限り、 どのように改ページが発生する場合も、テーブルの行グループの一部が常に表示され、 ヘッダかフッタだけのテーブルが現れることはありません。
上記の部分がページの高さを超える場合は、テーブルがページの下端をはみ出します。 従って、適切なレイアウトとなるためには、テーブルのキャプションとヘッダとフッタの高さが、ページの高さに対して十分に小さいことが望ましいです。
改ページに関する特性は行の間には通常のフローのブロックと同様に適用されます。 改ページに関する特性の指定は行グループの間にも適用されます。 ただし、強制改ページで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
テーブルがページの先頭にあり、かつ改ページ禁止指定のために、ページの下端までの間で改ページ出来ない場合は、行間の改ページ禁止を無視します。 この場合は、改ページが禁止された部分であっても改ページが発生します。
テーブル行内に、page-break-inside: avoid;が指定されたセルがなく、 テーブル行がページの下端に差し掛かっている場合、そのテーブル行の分割が試みられます。 このとき、orphansとwidowsが尊重され、 行に属する全てのセルが分割不可能な場合は、行全体が次のページに先送りされます。 1つでも分割可能なセルがあった場合は、行が分割されます。 この場合、他のセルに対してはorphansとwidows を無視した分割が起こる可能性があります。
分割されたセルに対してはvertical-alignによる垂直アラインメントの指定が無効となり、 セルの内容は全てセルの上端につけられます。
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; }
上のスタイルシートをデフォルトのスタイルシートとして指定しておけば、 あらゆるページでテーブルセル内での改ページがされるようになります。