打印带有强制分页符的表格
Posted
技术标签:
【中文标题】打印带有强制分页符的表格【英文标题】:Printing tables with forced page breaks 【发布时间】:2013-03-11 06:39:08 【问题描述】:我有一张有数百行的长表。为了在每一页上打印表格标题,我使用 THEAD display: table-header-group 来设置表格的样式。它在 Firefox 和 IE9 中按预期工作。但是当我尝试强制分页符时,如下面的代码所示,它在 IE9 中不起作用。在 IE9 中,表格标题只打印表格自然中断的页面。
这里是代码sn-p -
CSS:
@media print
thead display: table-header-group;
html/php:
<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
</tr>
</thead>
<tbody>
<?php
foreach ($items as $item)
echo " <tr> " ;
echo "<td>text</td>" ;
echo "<td>text</td>" ;
echo "<td>text</td>" ;
if ($condition)
echo "</tr>" ;
echo "<tr style='page-break-after:always;'>" ;
echo "</tr>" ;
?>
</tbody>
</table>
非常感谢您对此提供的任何帮助。
谢谢。
【问题讨论】:
回显不需要括号,你可以去掉它们:) 如果有帮助,我会引用另一篇帖子Setting float:none on all parent elements makes page-break-before:always work correctly.
。根据 >***.com/questions/4884380/…
非常感谢!!我添加了 page-break-before 而不是 page-break-after 并在每个父元素上将 float 设置为 none,它就像一个魅力!再次感谢。
【参考方案1】:
从使用带有结束标签的正确 HTML 开始
if ($condition)
echo ( "</tr>" );
echo ( "<tr style='page-break-after:always;'>" );
echo ( "</tr>" );
else
echo ( "</tr>" );
如果没有帮助,请尝试
if ($condition)
echo ( "</tr>" );
echo ( "<tr style='page-break-after:always;'>" );
echo ( "</tr> " );
echo ( ' <tr class="class_only_visible_when_printed"> ' );
echo ( " <th>Header 1</th> " );
echo ( " <th>Header 2</th> " );
echo ( " <th>Header 3</th> " );
echo ( " </tr> " );
else
echo ( "</tr>" );
【讨论】:
谢谢!我已经尝试过您建议的第二种解决方案,但 IE 仍然会打印自然分页的标题。以上是关于打印带有强制分页符的表格的主要内容,如果未能解决你的问题,请参考以下文章