6

我有一个页面,基本上显示给定日期的所有工作订单。我试图创建 HTML,以便可以使用 page-break-after: 始终创建逻辑打印分页符并继续。但是,当用户打印页面时,通常会出现重叠、同一页面上的多个工作订单等。我只是想强制执行 Firefox、Safari 和 Chrome 会听的硬分页符。

我的 HTML 看起来像这样

<div class="WOPrint">
    <div class="WOHeader">
        <h1>Header stuff</h1>
    </div>
    <!-- content -->
</div>
<div class="WOPageBreak"></div>
<div class="WOPrint">
    <div class="WOHeader">
        <h1>Header stuff</h1>
    </div>
    <!-- content -->
</div>
<div class="WOPageBreak"></div>
<!-- repeat N times -->
<div class="WOPrint">
    <div class="WOHeader">
        <h1>Header stuff</h1>
    </div>
    <!-- content -->
</div>
<div class="WOPageBreak"></div>

我的CSS基本上是这样的:

.WOPrint
{
    max-width: 100%;
    padding-bottom: 3em;
}

.WOHeader
{
    display: block;
    page-break-inside: avoid;
}

.WOPageBreak
{
    height: 1px;
    width: 100%;
    float: left;
    page-break-after: always;
    display: block;
}

编辑 在一次骇人听闻的尝试中,我尝试设置 WOPrint 类的最小高度。当我将其设置为标准的美国纸张尺寸时,将其更改为 9 英寸似乎为我提供了足够的边距空间来从所有 Safari、Firefox 和 Chrome 进行打印。这当然不是我想要修复它的方式,但我也不想渲染为 PDF。

.WOPrint
    {
        max-width: 100%;
        padding-bottom: 3em;
        min-heihgt: 9in
    }
4

3 回答 3

3

简短的回答。您不能在所有浏览器中都始终支持它。虽然对 page-break-before 的支持比 page-break-after 稍好一些...

参见page-break-before兼容性和page-break-after兼容性

您也可以尝试在页面中嵌入Ctrl-L,因为我很确定很多打印机驱动程序都会忽略这一点。

于 2010-11-30T22:04:12.530 回答
1

通过min-heightWOPrintCSS 类中设置,我可以为标准高度页面伪造一个近似的分页符:

.WOPrint
    {
        max-width: 100%;
        padding-bottom: 3em;
        min-height: 9in;
    }
于 2010-11-30T23:59:51.560 回答
1

所有你需要的是

.WOPageBreak
{
    page-break-before: always;
}

但是,您还需要在 body 标记中添加“ overflow:visible ”,因为没有它,Firefox 只会打印第一页。

如果您在打印时在 body 上设置 margin:0,您还可以获得更一致的结果,如下所示:

@media print{body{margin:0}}
于 2017-07-11T01:28:16.053 回答