jQuery打印指定區(qū)域Html頁面并自動分頁
最近項目中需要用到打印HTML頁面,需要指定區(qū)域打印,使用jquery.PrintArea.js 插件
用法:
$("div#printmain").printArea();
但還是會打印DIV后面的內(nèi)容,這里可以使用CSS控制打印分頁
<div style="page-break-after: always;"></div>
有時用CSS控制分頁了但還是會連續(xù)打印頁面,這里就可以用上PrintArea 插件中的屬性參數(shù)。
PrintArea部分源碼:
var modes = { iframe : "iframe", popup : "popup" }; var defaults = { mode : modes.iframe, popHt : 800, popWd : 800, popX : 200, popY : 200, popTitle : '', popClose : false , twoDiv : '', //自已擴展的屬性,為滿足變態(tài)需求 pageTitle: ''};//自已擴展的屬性,為滿足變態(tài)需求
可以看出插件中定義的屬性格式為JSON,下面介紹部分屬性
modes定義了兩個屬性,指定popup時會打開新窗口,可以視為打印預覽頁面,默認為iframe。
@popClose | [boolean] | (false),true 打印完成后是否開閉預覽頁面,默認為false(不關閉)。
$("div#printmain").printArea({mode:"popup",popClose:true});
這樣就可以指定DIV打印了。
下面說一下我新增兩個屬性的用途
twoDiv:
需要打印的第二個DIV ,當然會是第二頁,這個頁面比較長,需要自動分頁,并且表格中每行都不一樣,有些行跨了多行,這里打印出來,一行可能會打印在兩張紙上。
pageTitle:
第二個DIV分成多頁里,每一頁的表頭都需要一樣,這個參數(shù)就是公用表頭。
這兩個參數(shù)都對應著頁面中的DIV,如:
<div id="pageTitle" style="display: none;">
頁面定義好后,我們看看插件中是如何處理我們的頁面的。
writeDoc.open(); writeDoc.write(html); //打找一個窗口關寫窗口中的HTML代碼 writeDoc.close(); printWindow.focus(); printWindow.print();
下面是生成html的代碼
html+=docType() + "<html>" + getHead() + getBody(thisPage) + "</html>";
插件中都定義了相義的方法,我沒有做任何修改,這里我就不粘貼了。
下面是我的思路:
需在將一個DIV中的內(nèi)容分成多頁,且一行不跨多頁,我們就得在生成html 代碼上下功夫了。
首先找出DIV中的所有行,當公共表頭加上這些行后高度達到一頁,就需要分頁了,這里就有可以一頁中最后一行剛好跨了多頁,將這一行保存下來,放到下一頁。
每一頁生成完成后都需要在HTML標簽后面加上CSS分頁標記,這樣就打印機就會乖乖的分頁。
說明一下,生成的預覽頁面一頁就是一個HTML頁面,它有對應的表頭與DTD信息。
有人可能明明預覽只有4頁,而打印出來總會多一頁,這時你需要檢驗一下你生成的頁面中分頁標記是不是在HTML標簽之前。
分面標記一定要在HTML標簽之后,這樣可解決打印多打一頁問題。
PS:
下面我會傳上我修改過后的JS插件,由于我項目周期的原因,代碼中很多部分都是寫死了,只是為了解決本次打印的問題。所在代碼中寫得很亂,希望大家將究著看
同事也希望哪位能夠再優(yōu)化一下,使之通用。
相關文章
jquery tree 可編輯節(jié)點實現(xiàn)代碼(jquery一句話節(jié)點菜單)
jquery tree 可編輯節(jié)點,實現(xiàn)的三級菜單實現(xiàn)代碼,這里我們將為大家準備了兩個。一個是鋒利的jquery中的一句話導航菜單實現(xiàn)代碼。非常不錯。2009-11-11基于jquery的一個OutlookBar類,動態(tài)創(chuàng)建導航條
初學jquery,如有錯誤,請高手們指出想看效果及完整代碼的可以下載rar包2010-11-11Jquery 過濾器(first,last,not,even,odd)的使用
Jquery 過濾器,顧名思義就是過濾一些不需要的元素,主要有first,last,not,even,odd等等,下面有個使用示例,大家可以感受下2014-01-01基于jquery的自定義鼠標提示效果 jquery.toolTip
看到其它網(wǎng)站A標簽title效果,心里癢癢,就想也用到自己網(wǎng)站上。 正好在學jquery 插件擴展,就參照前輩代碼,自己動手寫了一個2010-11-11