WEB打印系列教程之四--使用ScriptX进行复杂的WEB打印设置、使用jatoolsPrinter控件进行WEB打印设置

时间:2022-08-31 09:41:14

在以前的几篇文章里,介绍的都是如何利用IE本身提供的控件在进行打印设置,这种方法有它的局限:不能够以编程的方式进行页面方向的设置,而这有时很重要。下面本道就给大家介绍一下,如何使用一个叫ScriptX的控件来进行复杂一点的打印设置。

ScriptX是一个叫MeadCo的国外公司的产品,它分为基础版(免费)和高级版(收费),基础版可以对 页眉,页脚,页边距,纸张方向进行设置。高级版有一些额外的功能,由于是收费的,需要付费以后才能用到你系统中,这里就不介绍了。

ScriptX的最新版是6.4,可以在以下地址下载。ScriptX 6.4打印控件下载

下载以后是一个smsx.cab文件,把它放到你的应用目录下,例如/study/smsx.cab。
下面通过一个例子来讲解它的功能和使用。

  1. <html>  
  2. <object id=factory style="display:none"  
  3.   classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"  
  4.   codebase="http://ajava.org/study/smsx.cab#Version=6,4,438,06">  
  5. </object>  
  6.   
  7. <script>  
  8. function printWindow() {   
  9. factory.printing.header = "使用ScriptX进行打印设置";   
  10. factory.printing.footer = "AJava.org出品";   
  11. factory.printing.portrait = false;//设为true就是横向   
  12. factory.printing.leftMargin = 1.0;   
  13. factory.printing.topMargin = 1.0;   
  14. factory.printing.rightMargin = 1.0;   
  15. factory.printing.bottomMargin = 1.0;   
  16. }   
  17. printWindow();   
  18. </script>  
  19.   
  20. <input  type="button" value="打印本页"  onclick="factory.printing.Print(true)">  
  21.  <input  type="button" value="打印目标框架页"  onclick="factory.printing.Print(true, idFrame)">  
  22.  <input  type="button" value="打印设置..."  onclick="factory.printing.PageSetup()">  
  23.  <input   type="button" value="打印预览..."  onclick="factory.printing.Preview()">  
  24.   
  25.  <iframe name="idFrame" width="100%" height="60%" src="http://www.baidu.com">  
  26.  </html>  

factory.printing.Print(true),这里设置成true或false,我没有发现有什么不同的效果。它的原意是直接打印。

factory.printing.Print(true, idFrame),第一个参数同上,第二个参数是目标框架的name。

factory.printing.PageSetup()是调出页面设置窗口。

factory.printing.Preview()是调出页面预览窗口。

其他的代码很简单,不需要解释什么。

 

 

jatoolsPrinter 是一款实现网页套打的免费工具。该工具的特点是可以直接对web页面进行精确的分页打印,这不仅使“会设计网页就会做网页套打”成为可能,也使项目经理们摆脱了预算紧张的压力。jatoolsPrinter通过在网页中嵌入控件,解决了web客户端精确打印,批量打印,打印配置自动保留等问题。

由于jatoolsPrinter的官方网站上有详细的例子和文档,因此,本篇内容就不对具体的一些参数和用法进行介绍了。本道直接给出一个例子。

  1. <html>    
  2. <head>    
  3. <title>我的第一个打印文档</title>    
  4.   
  5. <!-- 插入打印控件 -->    
  6. <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=2,1,0,3"></OBJECT>    
  7. <script>    
  8. function doPrint()    
  9. {    
  10.        myreport = {     
  11.   print_settings:{    
  12.                                   // 如果想使用默认打印机,不需要设置    
  13.                                   // printer: '联想激打',    
  14.   
  15.                                  // 指定纸张的高宽以毫米为单位z,本设置实际是指定为a4大小    
  16.                                 pageWidth : 2100,    
  17.                                 pageHeight : 2970,    
  18.                                // 指定打打印方向为横向, 1/2 = 纵向/横向    
  19.                                orientation : 2 },    
  20.     documents:document,   // 要打印的div 对象在本文档中,控件将从本文档中的 id 为 'page1' 的div对象,作为首页打印    
  21.                                                         // id 为 'page2' 的作为第二页打印    
  22.         copyrights:'杰创软件拥有版权 www.jatools.com'         // 版权声明,必须    
  23.         };    
  24.        jatoolsPrinter.printPreview(myreport);  // 预览          
  25. }     
  26. </script>    
  27. </head>    
  28. <body bgcolor="#e0e0e0">    
  29.   
  30. <div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文档第一页</div>    
  31. <div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文档第二页</div>    
  32.   
  33. <input type="button" value="按钮"  onClick=' doPrint()'>    
  34. </body>    
  35. </html>    

点击按钮后,就弹出预览界面


两个div分别在第一页和第二页。

jatoolsPrinter免费版只能使用在网段192.168.*.*。

本来在没了解jatoolsPrinter之前,对它抱有很大的希望,谁知到只能在192.168.*.*使用。在实际环境中,有很多局域网是172.16.*.*网段,总不能要求用户改地址吧。

希望还有更好的打印控件出现。