最近遇到这么一个需求,需要在IE浏览器上打印的时候,不直接调用打印机,而是先打开打印预览页面,再进行打印操作。
这样,就需要对原本的打印方法进行改写了。具体实现如下:
在jsp页面进行以下操作。
<!-- 在body标签中写入一个object -->
<object id="printWB" style="dispaly:none" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"></object>
function printall(){
// 打印页面预览
if (!!window.ActiveXObject || "ActiveXObject" in window){//IE浏览器
$(".noprint").css("display","none");
try{
//增加打印预览
printWB.ExecWB(7, 1);
}catch(e){
alert(e);
}finally{
$(".noprint").css("display","");
}
}else{
//需要引入jquery.jqprint-0.3.js
$('#a').jqprint();
}
}
附该对象常用的方法:
<script>
WebBrowser.ExecWB(1,1) //打开
WebBrowser.ExecWB(2,1) //关闭现在所有的IE窗口,并打开一个新窗口
WebBrowser.ExecWB(4,1) //保存网页
//--------------- 常用 ---------------
WebBrowser.ExecWB(6,1) //打印
WebBrowser.ExecWB(7,1) //打印预览
WebBrowser.ExecWB(8,1) //打印页面设置
//-------------------------------------
WebBrowser.ExecWB(10,1) //查看页面属性
WebBrowser.ExecWB(15,1) //撤销
WebBrowser.ExecWB(17,1) //全选
WebBrowser.ExecWB(22,1) //刷新
WebBrowser.ExecWB(45,1) //关闭窗体无提示
</script>
下面附上测试的完整代码:
<html>
<head>
<title>print demo</title>
<meta charset="utf-8" >
<style media="print">
.noprint {
display: none;
}
</style>
<script language="JavaScript">
function doPrintSetup() {
//打印设置
printWB.ExecWB(8, 1)
}
function doPrintPreview() {
if (!!window.ActiveXObject || "ActiveXObject" in window){
//打印预览
try{
printWB.ExecWB(7, 1)
}catch(e){
alert(e);
}
}
}
function doPrint() {
//直接打印
printWB.ExecWB(6, 6)
}
</script>
</head>
<body>
<object id="printWB" style="dispaly:none" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"></object>
<div class="noprint">
<input type="button" value="打印设置" onclick="doPrintSetup();"></input>
<input type="button" value="打印预览" onclick="doPrintPreview();"></input>
<input type="button" value="直接打印" onclick="doPrint();"></input>
<input type="button" value="关闭窗口" onclick="printWB.ExecWB(45,1);"></input>
</div>
<p>这些文本将要被打印!</p>
<p>关于这个组件还有其他的用法,列举如下:<br/> WebBrowser.ExecWB(1,1) 打开<br/> Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口<br/> Web.ExecWB(4,1) 保存网页<br/> Web.ExecWB(6,1) 打印<br/> Web.ExecWB(7,1) 打印预览<br/> Web.ExecWB(8,1) 打印页面设置<br/> Web.ExecWB(10,1) 查看页面属性<br/> Web.ExecWB(15,1) 撤销<br/> Web.ExecWB(17,1) 全选<br/> Web.ExecWB(22,1) 刷新<br/> Web.ExecWB(45,1) 关闭窗体无提示<br/>
</p>
</body>
</html>