Asp.net 網頁列印一
Asp.net 網頁列印二
前段時間寫了兩篇不用第三方控制項,用純javascript解決asp.net頁面列印的問題。在使用測試中發現了一些問題:比如分頁後的效果不大友好,沒有設定每個頁面的也邊框;頁首頁尾處理不是很好;頁面邊界設定後列印出來不對等。經過這幾天的繼續研究,終於把這些問題全部解決了,可以說的完美的實現了頁面列印、資料分頁、紙張大小設定、頁面邊界設定、頁首頁尾設定(哈哈自己YY一下)。
這裡分享一下主要解決的幾個問題,希望對大家有所協助
Question:
1. 添加頁面的也邊框,為每個分頁後的頁面最外層添加一個div框,這樣預覽效果更好;
2. 重新設定每個分頁的div嵌套組成;設定頁首、頁尾、頁面等;
3. 設定列印的時候紙張Size,頁面邊界等資訊;
Solution:
1. 為頁面添加一個邊框div,涉及到兩個問題,一個是根據分頁後的頁數,動態產生每個頁面的邊框;第二個是在列印的時候這個邊框不能列印出來應該去掉;那麼如何處理呢?——我的辦法是在頁面中設定一<div id="pageBorderDiv" class="noprint" style="position: absolute;"> </div>然後每次分頁之後動態添加該div的孩子也就是也邊框div層。這樣既解決了顯示邊框的問題,列印的時候這些div也不會被列印了。
2. 每個頁面div組成,如右所示。最外層div的size就是列印紙張的size;裡面第二個div的高度還是為紙張的高度,寬度為紙張size-左右頁面邊界的大小;然後高度又被分成3個部分,分別是被頁首、頁尾、頁面所瓜分。
3. 設定列印的時候紙張Size,頁面邊界等資訊,這個是最重要的地方。因為前面我所做的一切都只是個顯示問題,而需要把這些按照所見在列印出來,更關鍵。之前我的列印在設定頁面邊界後之所以出現問題,就出在這裡,沒有設定到也面的大小。這裡我們可以使用css的@page來設定列印page的屬性。 @page
這裡size 就列印紙張的大小,margin就是頁面邊界,因為我們的頁面邊界都設定到了每個頁面的div裡面,所以這裡面的margin值我們設定為0px就行了。
關於demo 現在還沒有整理出來,等空了整理出來分享。
最近看到大家在關注篇文章希望demo,我抽整理了一下,發在這裡,供大家參考。demo連結如下:
Asp.NetPrintDemo