2009-11-02 53 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