我可以在HTML打印中强制分页吗?

Dan*_*ola 162 html printing page-break

我正在制作一个可打印的HTML报告,它的"部分"应该从新页面开始.

是否有任何方法可以在HTML/CSS中添加一些内容,这些内容将向浏览器发出信号,表明它需要在此时强制分页(开始新页面)?

我不需要在每个浏览器中使用它,我想我可以告诉人们使用一组特定的浏览器来打印它.

Chr*_*ett 301

添加一个名为"pagebreak"(或"pb")的CSS类,如下所示:

@media print {
    .pagebreak { page-break-before: always; } /* page-break-after works, as well */
}
Run Code Online (Sandbox Code Playgroud)

然后添加一个空的DIV标记(或生成框的任何块元素),您希望分页.

<div class="pagebreak"> </div>
Run Code Online (Sandbox Code Playgroud)

它不会显示在页面上,但会在打印时分解页面.

  • 根据MDN,"page-break-after`"适用于生成框的块元素,"因此使用空的`<span>`元素将不起作用.将它应用于您的内容是一个更好的主意.请参阅https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-after (13认同)
  • 但是就像CSS中的所有好东西一样,这并不总是能够始终如一地运作,所以测试生活中的日常光,以免你生气的用户想知道为什么你的网站会打印成堆的额外空白页! (7认同)
  • 由于某种原因,在Chrome中使用此技巧时,下一页的1行像素泄漏到上一页中(使用背景色时值得注意)。我使用`.pagebreak {min-height:1px; page-break-before:始终;}` (3认同)
  • @nullability:很好的收获。我以前的工作主要是在 WinForms 的 WebBrowser 控件中使用它,该控件使用 IE,这是遵循标准的黄金标准。 (2认同)
  • 这在 Chrome 中对我不起作用......我试图在 &lt;table&gt; 中的 &lt;tr&gt; 之后在里面做一个分页符,在这种情况下它会起作用吗? (2认同)

jfa*_*ell 42

试试这个链接

<style>
@media print
{
h1 {page-break-before:always}
}
</style>
Run Code Online (Sandbox Code Playgroud)

  • 如果你想跳过第一页的第一个标题,试试`h1:not(:first-child){page-break-before:always; }` (5认同)

Gio*_* PY 16

First page (scroll down to see the second page)
<div style="break-after:page"></div>
Second page
<br>
<br>
<button onclick="window.print();return false;" />Print (to see the result) </button>
Run Code Online (Sandbox Code Playgroud)

只需将它添加到您需要页面转到下一页的位置(文本“第 1 页”将在第 1 页上,文本“第 2 页”将在第二页上)。

Page 1
<div style='break-after:always'></div>
Page 2
Run Code Online (Sandbox Code Playgroud)

这也有效:

First page (there is a break after this)
<div style="break-after:page"></div>
Second page (This will be printed in the second page)
Run Code Online (Sandbox Code Playgroud)

  • `&lt;div style="break-after:page"&gt;&lt;/div&gt;` 对我有用。第一个选项不适合我的特殊情况。 (3认同)

Ous*_*ama 9

试试这个(它适用于 Chrome、Firefox 和 IE):

... content in page 1 ...
<p style="page-break-after: always;">&nbsp;</p>
<p style="page-break-before: always;">&nbsp;</p>
... content in page 2 ...
Run Code Online (Sandbox Code Playgroud)


小智 8

例如:下面的代码出现在页面末尾,并且您想要强制 HTML 在另一页上打印,因此您可以像这样编码

       <table>
            <tbody>
               <tr>
                  <td width="180" valign="top">
                            <p>
                                <strong> </strong>
                            </p>
                            <p>
                                <strong> </strong>
                            </p>
                            <p>
                                <strong> </strong>
                            </p>
                            <p>
                                <strong> </strong>
                            </p>
                            <p align="center">
                                <strong>Approved by Director</strong>
                            </p>
                        </td>
                    </tr>
                </tbody>
            </table>
Run Code Online (Sandbox Code Playgroud)

主要代码在这里:所需的答案

<div style="page-break-inside:avoid;page-break-after:always"></div>
Run Code Online (Sandbox Code Playgroud)

现在为第二个/另一个页面编写剩余的代码,如下所示

                <table border="1">
                            <tr class="center">
                                <td>
                                    #Main<b>&nbsp;Main</b>
                                </td>
                                <td>
                                    #Project<b>&nbsp;Project</b>
                                </td>
                                <td>
                                    #TypeMainProj<b>&nbsp;Main + Project</b>
                                </td>
                                <td>
                                    #Imprest<b>&nbsp;Imprest</b>
                                </td>
                            </tr>
                        </table>
Run Code Online (Sandbox Code Playgroud)


Juk*_*ela 7

您可以使用CSS属性page-break-before(或page-break-after).只需设置page-break-before: always这些块级元素(如标题,div,p,或table元素),应该在一个新行开始.

例如,要在任何第二级标题之前和类中的任何元素newpage(例如<div class=newpage>......)之前引起换行,您将使用

h2, .newpage { page-break-before: always }
Run Code Online (Sandbox Code Playgroud)


小智 6

下面的代码对我有用,这里还有更多示例

  <div style="page-break-inside:avoid;page-break-after:always">
  </div>
Run Code Online (Sandbox Code Playgroud)


sha*_*ver 5

只是想进行更新。page-break-after现在是遗产。

官方页面状态

该属性已由break-after属性代替。

  • 需要注意的是,该属性仅 Microsoft IE 和 Edge 浏览器支持。https://caniuse.com/#feat=mdn-css_properties_break-after_paged_context_always (2认同)
  • @Cadoiz 特别是“始终”不受支持。它应该是 `break-after: page` 而不是 https://caniuse.com/mdn-css_properties_break-after_paged_context_page (2认同)