我有一个使用window.print()打印html表的应用程序,当我点击打印超链接时,这个应用程序运行良好,我面临的问题是页面拆分,我已经浏览并找到了许多解决方案,其中大多数使用css来解决问题,但是当我尝试css时,如下所示,它不起作用。我在中模拟了一个示例演示,以展示这个问题。
测试它的铬,以便人们可以看到预览和使用页面大小作为A4,以查看分页。

JSFiddle
@media print {
body * {
visibility: hidden;
}
div {
page-break-inside: avoid;
}
table {
page-break-after: always;
page-break-inside: auto;
}
tr {
page-break-inside: avoid;
page-break-after: auto;
}
td {
page-break-inside: avoid;
page-break-after: auto;
}
thead {
display: table-header-group;
}
tfoot {
display: table-footer-group;
}
#printSection * {
visibility: visible;
}
#printSection {
position: absolute;
top: 0;
left: 0;
right: 0;
margin: 0 auto;
width: 100%;
}
}发布于 2014-10-23 09:23:32
,试试这个小提琴,
jsfiddle.net/w2p5kbcj/14
CSS
@media screen {
#printSection {
display: none;
}
}
@media print {
table {
page-break-after: auto;
page-break-inside: auto;
width:100%;
border-width: 1px solid #000;
font-size:16px;
font-family:Arial;
}
td{
padding:2px 5px 2px 5px;
}
}引用旧堆栈溢出线程
Javascript用于此目的
只需将js添加到代码中,并将类“splitForPrint”添加到表中,就可以将表整齐地拆分成多个页面,并将表头添加到每个页面。
发布于 2014-10-28 15:03:56
@media print {
.page-break { display: none; page-break-before: avoid; }
}这将确保打印机永远不会看到分页。
<div class="page-break"></div>发布于 2014-11-02 23:30:52
我也有过同样的问题。唯一起作用的就是用div来改变div。
因此,您可以使用div > div > div而不是table > tr > td,并使用css显示表,如下所示:
div(style: display: table;)
> div(style: display: table-row;)
> div(style: display: table-cell;)更新
并非所有浏览器都支持这样的属性:page-break-after: always;。就连Chrome也忽略了这一点。所以,如果它对你有用的话,试试这个布局。
更新2
即使它对您不起作用(不管怎样,我记得它起了作用),使用这个布局,您也可以在media print中轻松地使用它,就像这样:
@media print {
div > div {
display: block;
> div {
display: inline-block;
}
}
}您可以用.table类更改第一个div,然后继续。参见示例:https://github.com/nikoloza/Scratch/blob/master/scratch/less/core/classes.less#L83
https://stackoverflow.com/questions/26523052
复制相似问题