2009-11-02 52 views
76

我正在制作一个可打印的HTML报告,它有一个“部分”应该在新页面中开始。我可以强制在HTML打印中跳转页面吗?

有没有什么办法可以将HTML/CSS中的某些东西发送给浏览器,告诉它它需要跳转到新页面?

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

感谢
丹尼尔

回答

163

添加一个名为CSS类 “分页符”(或 “PB”),像这样:

.pagebreak { page-break-before: always; } /* page-break-after works, as well */ 

然后添加你想要的一个空的DIV标签(or any block element that generates a box)分页符。

<div class="pagebreak"> </div> 

它不会显示在页面上,但会打印时打乱页面。

+2

但是,像在CSS中一切美好的事物,这并不总是一致的全线工作,所以测试的生活一大跳吧,免得你有愤怒的用户想知道的额外的空白页,为什么你的网站打印桩! – Zoe 2009-11-02 22:17:49

+10

根据MDN的说法,'page-break-after'适用于生成一个框的块元素,因此使用一个空的''元素将不起作用。将它应用于您的内容是一个更好的主意。见https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-after – nullability 2014-01-17 17:46:14

+1

@nullability:好的。我主要在WinForms的WebBrowser控件中使用了这个功能,它使用IE,这是以下标准的黄金标准。 – 2014-01-17 19:25:07

26

试试这个link

<style> 
@media print 
{ 
h1 {page-break-before:always} 
} 
</style> 
+0

我认为这是一个更好的答案,因为它不涉及改变HTML来实现视觉效果。 – FinnNk 2009-11-02 22:17:06

+0

我其实更喜欢另一个,因为它给了我更多的控制权。我总是可以将“pagebreak”类分配给应该使页面跳转的H1。但它仍然是一个很好的解决方案。 @media的+1,尽管屏幕应该忽略page-break-before,我想。谢谢! – 2009-11-02 22:24:47

+0

h1是您可以用作打印中断标记的示例。你可以用你喜欢的名字替换和标记名字。你也可以使用page-break-after:总是 – jfarrell 2009-11-02 23:09:14

3

您可以使用CSS属性page-break-before(或page-break-after)。只需在应该从新行开始的那些块级元素(例如,标题,div,ptable元素)上设置page-break-before: always

例如,引起线路中断任何二级标题之前和newpage类中的任何元素之前(例如,<div class=newpage> ...),你会用

h2, .newpage { page-break-before: always } 
-1

@Chris Doggett非常有意义。 虽然我在lvsys.com上发现了一个有趣的技巧,它实际上可以在firefox和chrome上运行。只要将此评论放在任何想要插入分页符的地方即可。您还可以用任何块元素替换<p>标签。

<p><!-- pagebreak --></p> 
+2

这不起作用 – 2016-11-22 23:30:08