2011-02-03 162 views
12

我正在努力爲我們的Mediboard項目提供完整的HTML頁眉/頁腳打印功能。HTML頁眉/頁腳打印功能

長期以來,我知道CSS3 Page Media模塊將滿足我的需求,但至少距離兩三年。

因此,我試圖使它與CSS2功能一起工作,並且它幾乎可以正常工作,正如您在此printable document上看到的那樣。但是,對於內容打印在頁腳下的頁腳,我仍然有限制(請參閱打印預覽3-4頁)。

雖然我敢肯定的div.body的填充,底部使用,使其在Firefox 2

工作總之,是否有人有一個棘手的線索,以幫助我這個問題?

編輯: 爲了給出更多的細節,我們目前通過使用定位position: fixed,與top:0bottom:0取決於它是否是報頭或腳註的元件具有頁眉和頁腳。這很好,在打印時,這些元素在每個頁面的正確位置重複(請參閱「可打印文檔」示例)。唯一的問題是,當一個分頁符時,文本是這些元素(參見3/4頁)背後拉

EDIT2:更新文檔的URL

+0

Fabien,你能告訴我哪些瀏覽器你有這個工作英寸我只檢查谷歌瀏覽器8.0.552.237和打印預覽顯示只在最後一頁底部的頁腳。 – DigiKev 2011-02-08 20:22:51

+0

能否請您描述您的解決方案Fabien,這將是非常感謝!該文檔的鏈接已停用:/ – einarmagnus 2011-12-28 10:46:19

回答

-3

你會想最有可能實現的媒體類型。有關更多信息,請參閱http://www.w3.org/TR/CSS2/media.html。您可以擁有一張CSS頁面,該頁面沒有用於打印的浮動頁腳,另一個用於屏幕。

<LINK REL="stylesheet" TYPE="text/css" MEDIA="print, handheld" HREF="foo.css">

這是一個例子。

如果不需要,也可以考慮在頁面上隱藏頁腳。

1

根據我的經驗,分頁符在元素中不起作用。如果諸如[p] [/ p]的元素跨越兩個打印頁面,則HTML代碼不知道頁面之間發生中斷的地方。這是因爲用戶可能將自己的打印機頁邊距設置爲1或1.75英寸或其他值。實際打印機頁邊距不能通過CSS設置。 CSS只能將HTML頁面的邊距和填充設置爲「打印機」定義的頁邊距。沒有關於打印機設置的信息(如頁邊距)被髮送到瀏覽器。這就解釋了爲什麼內容在標題下被保護,因爲瀏覽器不知道頁面供稿何時發生。最簡單的解決方案只是在第一頁上提供標題信息,但這不是你想要的。暴力方法是插入分頁符[br style =「page-break-before:always;」 /]在適當的地方,但這對大量文件來說是不實際的。此外,包括來自同一製造商的打印機之間的細微差別也會有細微差別 - 例如,一張打印件可能只打印適合一頁的內容,即使兩臺打印機的邊距相同,下一臺打印機可能在下一頁上有最後一行設置。但是,對於表格信息([table] [/ table]),分配這樣的CSS變得容易將表保存在一起。我在猜測,可以統計頁面上的字符,並通過javascript動態插入分頁符(如果使用JQuery,很容易)來逼近暴力方法。

3

有一個很好的答案here涉及表。它確實是你想要的,甚至可以在IE6中工作。

3

它看起來像CSS2有一個@page規則中,你可以定義你的頁面大小和邊距:

@page { size:8.5in 11in; margin: 6em 1em 2em } 

- 或 -

@page { size:auto; margin: 6em 1em 2em } 

不幸的是我沒有時間測試它,但我很想知道它是否有效。我可以使用它。

我喜歡你正在計劃的頁眉/頁腳。良好的工作:)