JSP直接打印功能

方法一

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) 关闭窗体无提示 

<object  id="WebBrowser"  width=0  height=0  classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">     
</object>    

<input type=button value=打印 οnclick=document.all.WebBrowser.ExecWB(6,1)>  
<input type=button value=直接打印 οnclick=document.all.WebBrowser.ExecWB(6,6)>  
<input type=button value=页面设置 οnclick=document.all.WebBrowser.ExecWB(8,1)> 

 <input type=button value=打印预览 οnclick=document.all.WebBrowser.ExecWB(7,1)> 

 

二、在打印的页面中加入分页符

1、先在页面中加入样式表

<style>

.PageNext{page-break-after: always;}<!--控制分页-->

.style8 {font-size: medium; color: #000066; }

</style>

2、在body中可以这样写

<TABLE>

    <Tr>

        <TD><span class="style8">第一页</span></TD>

</Tr></TABLE>

<!-- 下面这个网页元素就是用于打印时分隔页面-->

<div id="pageNext1" style="visibility:hidden;"><p class="PageNext"></p></div>

<TABLE>

    <Tr>

        <TD align="center"><span class="style8">第二页</span></TD>

</Tr></TABLE>

 

三、在打印页面中去除不需要的元素

1、先在页面中加入这个样式

<style media=print> 

.Noprint{display:none;}<!--用本样式在打印时隐藏非打印项目--> 

</style>

2、页面中不需要的元素可以这么写

<input id="abc" class="Noprint" type=button name=print value="打印本页面" onClick="javascript:window.print()">

<font class="Noprint">隐藏的文字</font>

 

四、设计打印页眉和页脚

1、在页面中加入js代码

<script language="JavaScript">

var hkey_root,hkey_path,hkey_key

hkey_root="HKEY_CURRENT_USER"

hkey_path="http://www.cnblogs.com/zhaoxinxin/admin/file://software//Microsoft//InternetExplorer\\PageSetup\\"

//设置网页打印的页眉页脚为空

function pagesetup_null(){

try{

var RegWsh = new ActiveXObject("WScript.Shell")

hkey_key="header"

RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")

hkey_key="footer"

RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")

}catch(e){}

}

//设置网页打印的页眉页脚为默认值

function pagesetup_default(){

try{

var RegWsh = new ActiveXObject("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")

}catch(e){}

}

</script>

2、在body中这么写

<input type="button" value="清空页码" οnclick=pagesetup_null()>

<input type="button" value="恢复页码" οnclick=pagesetup_default()><br/>

 

五、用样式表调节页面边距

<style media="print" type="text/css">

  body   {font-size:9pt;   margin:-70px   0px   0px   0px  }

</style> 

一.用JS自带函数打印

直接调用

Java代码 复制代码

   1. <a href="javascript:window.print();">打印</a>

<a href="javascript:window.print();">打印</a>

二.IEWebBrowser组件

介绍

http://support.microsoft.com/default.aspx?scid=kb%3BEN-US%3BQ267240#top

http://support.microsoft.com/kb/q247671/#appliesto

Java代码 复制代码

   1. <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>  

   2. <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>

   3. <input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭所有>

   4. <input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为>  

   5. <input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>

   6. <input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>

   7. <input name=Button onClick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印预览>

   8. <input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置>

   9. <input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性>

10. <input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选>

11. <input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>

12. <input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=关闭>

<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>

<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(7,1) 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=关闭>

三.使用ScriptX.cab控件

1.下载ScriptX.cab控件

官网http://www.meadroid.com/scriptx/index.asp

2.使用object元素,修改codebase,classid的值

这里调用控件ScriptX.cab

Java代码 复制代码

   1. <OBJECT id="factory" style="DISPLAY: none" codeBase="${rootUrl}js/smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

<OBJECT id="factory" style="DISPLAY: none" codeBase="${rootUrl}js/smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

这段代码用来加载cab文件,clsid和codebase必须要和你下载的cab中的信息对应,否则组件会加载错误,这两项其实不难找,只要你用winrar打开你下载的cab文件,然后找到扩展名是.inf的文件,然后打开之,就能看到了。

3.调用控件脚本

Print.js文件

Java代码 复制代码

   1. function setPrintBase(headerText,footerText,rootUrl) {

   2.  

   3.     // -- advanced features ,未曾使用过,有待确认。

   4.  

   5.         //factory.printing.SetMarginMeasure(2); // measure margins in inches

   6.  

   7.         //factory.SetPageRange(false, 1, 3);// need pages from 1 to 3

   8.  

   9.         //factory.printing.printer = "HP DeskJet 870C";

10.  

11.         //factory.printing.copies = 2;

12.  

13.         //factory.printing.collate = true;

14.  

15.         //factory.printing.paperSize = "A4";

16.  

17.         //factory.printing.paperSource = "Manual feed"

18.  

19.     var header = (headerText==null||headerText=="")?'默认页眉':headerText;

20.  

21.     var footer = (footerText==null||footerText=="")?'默认页角':footerText;

22.  

23.   factory.printing.header = "&b"+header+"&b" ;

24.  

25.   factory.printing.footer = "&b"+footer;

26.  

27.   factory.printing.portrait = true;

28.  

29.   factory.printing.leftMargin =10.00;

30.  

31.   factory.printing.topMargin =10.00;

32.  

33.   factory.printing.rightMargin =10.00;

34.  

35.   factory.printing.bottomMargin =10.00;

36.  

37. }

function setPrintBase(headerText,footerText,rootUrl) {

    // -- advanced features ,未曾使用过,有待确认。

        //factory.printing.SetMarginMeasure(2); // measure margins in inches

        //factory.SetPageRange(false, 1, 3);// need pages from 1 to 3

        //factory.printing.printer = "HP DeskJet 870C";

        //factory.printing.copies = 2;

        //factory.printing.collate = true;

        //factory.printing.paperSize = "A4";

        //factory.printing.paperSource = "Manual feed"

    var header = (headerText==null||headerText=="")?'默认页眉':headerText;

    var footer = (footerText==null||footerText=="")?'默认页角':footerText;

factory.printing.header = "&b"+header+"&b" ;

factory.printing.footer = "&b"+footer;

factory.printing.portrait = true;

factory.printing.leftMargin =10.00;

factory.printing.topMargin =10.00;

factory.printing.rightMargin =10.00;

factory.printing.bottomMargin =10.00;

}

例子

Java代码 复制代码

   1. <%@ page contentType="text/html;charset=GBK"%>

   2.  

   3. <html>

   4. <head>

   5. <meta http-equiv="imagetoolbar" content="no">

   6. <script language="javascript" src="print.js"></script>

   7. <style media="print">

   8. .Noprint   {DISPLAY:   none;}

   9. </style>

10. <title>打印测试</title>

11. </head>

12. <OBJECT id="factory" style="DISPLAY: none" codeBase="smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

13.  

14. <script defer>

15. function window.onload() {    

16. setPrintBase('页眉','页脚');

17. }

18. </script>

19. <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">

20. <center class="Noprint">

21. <input type=button value="打印" οnclick="factory.printing.Print(true)">  

22. <input type=button value="页面设置" οnclick="factory.printing.PageSetup()">  

23. <input type=button value="打印预览" οnclick="factory.printing.Preview()">            

24. <input type="button" value="关闭" οnclick="window.close();">

25. </center>

26.    <center>

27.       <table width="100%" border="0" cellpadding="0" cellspacing="0">

28.           <tr><td align="center"><b>内容</b></td></tr>

29.        </table>

30.     </center>

31. </body>

32. </html>

<%@ page contentType="text/html;charset=GBK"%>

<html>

<head>

<meta http-equiv="imagetoolbar" content="no">

<script language="javascript" src="print.js"></script>

<style media="print">

.Noprint   {DISPLAY:   none;}

</style>

<title>打印测试</title>

</head>

<OBJECT id="factory" style="DISPLAY: none" codeBase="smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

<script defer>

function window.onload() {  

setPrintBase('页眉','页脚');

}

</script>

<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">

<center class="Noprint">

<input type=button value="打印" οnclick="factory.printing.Print(true)">

<input type=button value="页面设置" οnclick="factory.printing.PageSetup()">

<input type=button value="打印预览" οnclick="factory.printing.Preview()">          

<input type="button" value="关闭" οnclick="window.close();">

</center>

   <center>

      <table width="100%" border="0" cellpadding="0" cellspacing="0">

          <tr><td align="center"><b>内容</b></td></tr>

       </table>

    </center>

</body>

</html>

转载于:https://my.oschina.net/wyunsh5168/blog/137618

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值