1. 程式人生 > >針對web列印控制元件的使用心得

針對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);

//此程式碼本人測試在IE6以上可以,IE6報沒有許可權錯誤。如有人解決望賜教

針對上述問題,尋找了別的替代方法,即彈出一個新建頁面,在頁面裡去列印。具體程式碼如下://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();