針對web列印控制元件的使用心得
首先附上smsx.cab授權制作工具,地址稍後附上。script授權制作工具
最近一直在弄web列印功能,大概瞭解了兩種控制元件。
1:smsx.cab
期間遇到的問題大概如下.
我的頁面是一個jsp包含多個iframe,需要對單個iframe進行列印預覽,剛開始在每個iframe包含的頁面建立factory.printing,報上面的錯誤。修改為在最父層頁面建立一個全域性物件(myPrint)。在子頁面(iframe)頁面中window.parent.myPrint.Print(true);//我的頁面層次只有一層,所以只有一個parent。
2. 區域性列印預覽。//"pf_"+tabPanelId此引數為iframe的ID
列印:window.parent.myPrint.Print(true,"pf_"+tabPanelId);
預覽:window.parent.myPrint.Preview("pf_"+tabPanelId);
但是此功能在IE6下面不好用。報無效的過程呼叫或引數錯誤。一直沒找到解決辦法。
2:WebBrowser 。此控制元件需要修改IE設定。
具體設定:安全-internet-自定義級別-對未標記為可安全執行指令碼Activex控制元件初始化(啟用)
上個帖子中提到,此控制元件區域性預覽未找到解決辦法,在此貼中附上解決辦法。辦法如下:
window.parent.frames["pf_"+tabPanelId].WebBrowser.ExecWB(7, 1);
針對上述問題,尋找了別的替代方法,即彈出一個新建頁面,在頁面裡去列印。具體程式碼如下://showTags 要列印預覽的ID
var PrintWin = window.open('about:blank', 'Print');
PrintWin.document.write("<html><head>");
PrintWin.document.write("</head><body>")
$(document).find("link").filter(function () {
return $(this).attr("rel").toLowerCase() == "stylesheet";
}).each(function () {
PrintWin.document.write("<link type=\"text/css\" rel=\"stylesheet\" href=\"" + $(this).attr("href") + "\" >");
});
PrintWin.document.write('<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>' + document.getElementById(showTags).innerHTML );
PrintWin.document.write("</body></html>");
PrintWin.document.all.WebBrowser.ExecWB(7, 1);
PrintWin.close();