javascript实现jsp页面的打印预览

1、加载WebBrowser打印预览控件

<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" id="wb" name="wb" width="3"></OBJECT> 
<input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>
--------------------------------------WebBrowser控件 ---------------------------------------------
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT></OBJECT>
<input type=button value=打开 onclick=document.all.WebBrowser.ExecWB(1,1)>
<input type=button value=另存为 onclick=document.all.WebBrowser.ExecWB(4,1)>
<input type=button value=全选 onclick=document.all.WebBrowser.ExecWB(17,1)>
<input type=button value=属性 onclick=document.all.WebBrowser.ExecWB(10,1)>
<input type=button value=关闭窗口 onclick=document.all.WebBrowser.ExecWB(45,1)>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
<input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>

 

或者用超链接添加自定义函数

<a href="javaScript:printpreview();" >◆ 打印预览 </a>

自定义函数主要实现打印预览去掉页眉页脚

<script type="text/javascript">
//设置网页打印的页眉页脚为空
var HKEY_Root,HKEY_Path,HKEY_Key;      
HKEY_Root="HKEY_CURRENT_USER";      
HKEY_Path="//Software//Microsoft//Internet Explorer//PageSetup//";      
function PageSetup_Null()     {     
   try{      
       var Wsh=new ActiveXObject("WScript.Shell");      
       HKEY_Key="header";      
       Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");      
       HKEY_Key="footer";      
       Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");      
   }catch(e){}      
}  
function printpreview(){ PageSetup_Null(); // 打印页面预览 wb.execwb(7,1); }; </script>

2.设置不打印的元素:设置样式,并添加到不需要展示的元素(class="noprint")

 <style media="print" type="text/css"> 
    .Noprint{display:none;} 
    .PageNext{page-break-after: always;} 
</style> 

3.【遇到问题】当前网页是通过window.parent.openWindowCanClose(url,title,width,height) ;方式打开的窗口,打印的区域则包括了父窗口,而并不是我们当前设置的子窗口。

    我猜想web打印预览方法是基于window对象的,因此想要只是打印子窗口那么必须是另打开一个新网页。

window.open(url,title,width,height,"_blank");

 4.【遇到问题】当在本地测试该功能时可以正常预览,但是换在服务器上测试该功能时发现提示【 Internet Explorer 已经阻止此站点用不安全方式使用 ActiveX 控件

    这个是由于浏览器的安全级别设置引发的,最直接的方法就是【添加信任站点】

    设置方式:【工具】-【Internet选项】-【受信任的站点】-【站点】-填入网址(若这个网站不是以https:开头,将【对该区域中所有站点要求服务器验证】选项勾选去掉)

 

 

 

 

posted @ 2013-11-13 17:00  爱笑的狐狸  阅读(3248)  评论(1编辑  收藏  举报