如何用JavaScript打印Web页面

来源:互联网 发布:北航网络信息安全中心 编辑:程序博客网 时间:2024/05/23 16:54

事实上IE已经为我们内嵌了WebBrowser控件,已经能够很好的支持我们常用的打印功能了。通过该控件的功能调用,用户可以将当前的Html页面输出到打印机上,用户只需要将要打印的数据组织成Html页面,然后调用WebBrowser的打印功能就可以很好的实现所见即所得的打印功能。不过这种打印存在的缺点就是打印精度不够,如果需要精确定位的打印或套打建议还是使用专用的打印控件实现。下面我们就来讨论如何用WebBrowser打印控件来实现通用报表的打印。

同其他控件一样,首先我们需要在页面中嵌入WebBrowser控件,不过由于该控件是IE浏览器自带的,支持浏览器默认安全设置,因此避免了安全性设置的麻烦。对于IE7及以上安全性要求更高的浏览器,您或许还是需要自定义IE的安全性级别。

<object ID='WB' STYLE="DISPLAY: NONE;" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>

下面就是该控件涉及打印的功能调用,用户可以在JavaScrip中调用:

  • document.all.WB.ExecWB(6,1); //打印,打印当前页面
  • document.all.WB.ExecWB(7,1); //打印预览
  • document.all.WB.ExecWB(8,1); //打印设置,调出系统打印设置对话框

 

首先生成要打印的HTML页面,调整好打印样式,再在Script中调用上面的打印函数,您要的报表就被打印出来了。当然关于打印样式这里还有一些技巧。

<style media=print>  /* media=print 声明该样式对打印有效 */    .Noprint {display:none;} /* 声明了该样式的元素将不会被打印 */    .PageBreak {page-break-after: always;} /* 分页标志,在需要分页的地方插入具有该样式的元素,将自动分页 */</style>

还有一个不方便的问题是IE浏览器默认会添加页眉和页脚,这在实际应用中是不需要的,因此我们需要在浏览器中将页眉页脚清空,在页面设置对话框中清空页眉页脚即可。还有另一种方法是用VB Script修改本地注册表清除页眉页脚信息。下面是从网络中摘抄的具有该功能的脚本:

<script language="VBScript">  dim hkey_root,hkey_path,hkey_key   hkey_root="HKEY_CURRENT_USER"   hkey_path="/Software/Microsoft/Internet Explorer/PageSetup"   '//设置网页打印的页眉页脚为空   function pagesetup_null()     on error resume next     Set RegWsh = CreateObject("WScript.Shell")     hkey_key="/header"       RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""     hkey_key="/footer"     RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""   end function  '//设置网页打印的页眉页脚为默认值   function pagesetup_default()     on error resume next     Set RegWsh = CreateObject("WScript.Shell")     hkey_key="/header"       RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b页码,&p/&P"     hkey_key="/footer"     RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d"   end function </script>

这是一个利用WebBrowser实现的报表打印的示例

原创粉丝点击