我目前正在为一个项目生成一些在线报表,这些报表需要能够以一致的格式打印出来。报告的内容使用PHP生成,并在实际浏览器中正常工作。不幸的是,令人生气的是,一旦我尝试打印,所有的投注都关闭。在不同的浏览器中实现一致的分页符
我已将内容组织到一系列表中,并且我试图使用CSS属性中的页面中断和页面中断来控制报告的打印外观。其目的是报告项目如果内容太长而无法放在单个页面上,则只能在页面之间进行分解。
简化下来显著,我的网页的结构隐约如下:
<div class="body-block">
<div class="inner-block">
<div class="report-block">
<div class="report-entry">
<table>
<tr>
<th>Header</th>
</tr>
<tr>
<td>Row</td>
</tr>
<tr>
<td>Row</td>
</tr>
<tr>
<td>Row</td>
</tr>
</table>
</div>
<div class="report-entry">
<table>
<tr>
<th>Header</th>
</tr>
<tr>
<td>Row</td>
</tr>
<tr>
<td>Row</td>
</tr>
<tr>
<td>Row</td>
</tr>
</table>
</div>
</div>
</div>
</div>
(简化)CSS的网页看起来是这样的:
.body-block {
display: block;
min-width: 700px;
min-height: 100%;
margin: 0 auto;
}
.inner-block {
width: 700px;
min-height: 100px;
margin: 18px 0 10px 0;
float: left;
}
.report-block {
margin-bottom: 50px;
page-break-after: always;
}
.report-entry table {
width: 100%;
border-collapse: collapse;
border-bottom: 2px solid #333;
page-break-after: auto;
page-break-inside: avoid;
}
.report-entry td, .report-entry th {
page-break-inside: avoid;
page-break-after: avoid;
}
然而,浏览器兼容性导致我头痛不已:
- 火狐显示一切完美,打印出来没有我ssue。不幸的是,Firefox对于标准机器的公司政策是不允许的。
- Chrome只是完全忽略了page-break-inside和page-break-after属性,并在任何感觉的地方插入分页符。
- IE 11是公司的标准浏览器,它可以识别页面中断标签,但是如果表格/行/单元格的内容跨越多页(当人们尝试复制时粘贴在整个电子邮件中)。无论什么时候它穿过一个,它都会在表格前面添加一个额外的空白页面。
This JSFiddle展示了这个问题。直接链接到可打印版本可用here,但由于某种原因,似乎不适用于IE。
如何获得Chrome或IE(11)与我合作并正确处理分页符?
不幸的是,而那些看起来像一般的浏览器差异很好的参考,这些都不在这情况下,任何差别。 –
为了响应您的编辑,我尝试了各种页面中断值组合,以及添加元标记,但都没有解决问题。 –
尝试页面中断后组合它似乎是一个问题在IE 11 –