html、jsp、web页面打印调用
下面的例子简单实现了“打印”、“页面设置”、“打印预览”,请使用IE来调试下面的例子:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>打印示例</title>
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
<style>
body,td,th
{
font-size: 12px;
}
.NOPRINT {
font-family: "宋体";
font-size: 12px;
}
</style>
</head>
<body bgcolor="#FFFFFF">
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT> </OBJECT>
<p align=center>
<input type=button value="打印" onclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT">
<input type=button value="页面设置" onclick="document.all.WebBrowser.ExecWB(8,1)" class="NOPRINT">
<input type=button value="打印预览" onclick="document.all.WebBrowser.ExecWB(7,1)" class="NOPRINT">
</p>
打印的内容放这里,请使用IE来做测试
</body>
</html>
最近项目需要用JSP实现页面打印的功能,搜集了一些相关资料,整理如下:
1. WebBrowser控件:
在代码BODY里增加以下代码:<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>
便可使用这个组件相应的功能:
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示
<input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>
<input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭所有>
<input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置>
<input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性>
<input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选>
<input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>
<input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=关闭>
但是打印和打印预览会把整个页面都打印出来的,但我们有时只需打印页面的部分内容以及需要将打印按钮不显示在打印页面上,可以写一个样式,样式内容:
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
Noprint样式可以使页面上的打印按钮等不出现在打印页面上,在不需要打印的地方<p class="noprint">不需要打印的地方</p>就可以了。
PageNext样式可以设置分页,在需要分页的地方 <div class= "PageNext "> </div> 就OK了
然后使用样式就可以:
2.window.print()
调用该函数也可以实现页面打印,但是会将整个页面打印出来,若是只需要打印部分内容,可使用以下办法:
在页面的代码头部处加入JavaScript:
<script language=javascript>
function doPrint() {
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr) );
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
}
</script>
在页面正文处加上<!--startprint-->与<!--endprint-->标识。
需要注意的是:
当使用打印功能时,打印按钮会覆盖当前页面。
如果只打印该页面的部分内容,由于不需要打印的内容被就隐藏可能导致要打印的内容布局发生变化。若变化很大,可以点打印按钮弹出新窗口,把需要打印的内容显示到新窗口中,在新窗口中调用打印方法。

浙公网安备 33010602011771号