如何用JavaScript打印Web页面
事实上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>