1.用Object实现打印
添加对象〈object ID='WebBrowser1' WIDTH="0" HEIGHT="0" CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'>〈/object>
添加如下JS函数:
〈script type="text/javascript"> function print() { document.getElementById('WebBrowser1').ExecWB(6,1); } 〈/script> |
添加打印按钮:〈a href="javascript:print();">打印〈/a>
说明:
WebBrowser是IE内置的浏览器控件,无需用户下载。本文档所讨论的是有关IE6.0版本的WebBrowser控件技术内容。其他版本的IE应该也支持。与其相关的技术要求有:打印文档的生成、页面设置、打印操作的实现等几个环节。本文以asp为例,但是他可以容易的移植到其他web技术中。
WebBrowser控件:
〈object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'>〈/object>
WebBrowder控件的方法:
//打印 WebBrowser1.ExecWB(6,1); //打印设置 WebBrowser1.ExecWB(8,1); //打印预览 WebBrowser1.ExecWB(7,1); |
实现打印的设置,打印数据的生成,打印的预览,和打印一点思路:
实现打印的设置,打印数据的生成,打印的预览,和打印我一般这样做,假如查询结果在a.asp中,那么在a.asp中放置打印设置、打印预览、打印三个按钮。
单击打印设置按钮则在js中执行WebBrowser1.ExecWB(8,1),以打开打印设置窗口。
单击打印预览按钮则打开一个b.asp,在b.asp中重新生成打印数据,然后在b.asp中自动执行WebBrowser1.ExecWB(7,1),以打开用户预览界面。
单击打印按钮则也打开b.asp,在b.asp中重新生成打印数据,然后在b.asp中自动执行WebBrowser1.ExecWB(6,1),以自动打印数据。
2.用JS自带函数打印
〈a href="javascript:window.print();">打印〈/a> |
3.调用浏览器菜单命令
〈input type=button value="打印" οnclick="document.execCommand('print','true','true')"> |
其实第一种方法也是第二种方法的复杂实现方法,但是第一种方法提供了更多的预览,修改打印设置等功能。
推荐使用第二种方法,出于安全的考虑,有些浏览器(比如遨游)会禁用一些Object,所以在遨游中第一种方法会报权限不足的JS错误。
js 的两种源码:
<script language="javascript">
var hkey_root,hkey_path,hkey_key
var hkey_root="HKEY_CURRENT_USER";
var hkey_path="//Software//Microsoft//Internet Explorer//PageSetup//";
function printpr()
{
var OLECMDID = 7;
var PROMPT = 1;
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(OLECMDID, PROMPT);
WebBrowser1.outerHTML = "";
}
function prin(){
window.print();
}
function scrollPrint(){
if(navigator.userAgent.indexOf("Firefox")>0){
prin();
}else{
printpr();
}
}
</script>
<style media="print">
.Noprint { DISPLAY: none }
.PageNext{ PAGE-BREAK-AFTER: always }
</style>