jatoolsPrinter 使用手册


简介
安装
快速入门
最简单的打印预览
打印前设置打印参数
保留打印时的打印参数
第一次打印用当前配置,后续打印用最后一次打印配置
批量打印文档
多个文档共存在同一web页面中,区别打印
不显示文档,直接指定url打印
打印隐藏对象
仅在预览时可见,不输出到打印机的套打底图
打印结束后提交数据
为什么要使用回调方法
打印后关闭窗口
可视化设计套打       视频演示 
打印内容相对位置的事后调整及保存       视频演示 
使用自动分页
表格自动分页,表头每页可见
双面打印
显示页面设置对话框后打印
选择打印机进行打印
选择打印机,纸张类型,边距进行打印
设置图文并茂的页脚页眉
用控件设置IE打印背景
附录:API 参考手册


简介:

jatoolsPrinter 是一款实现网页套打的专门工具。作为web应用开发者,我们经常会遇到在浏览器中打印报表、票据的需求,浏览器本身 提供的打印功能一般不能满足这些需求,如精确分页,套打等。jatoolsPrinter正是为了解决这些需求而专门研发的。

使用jatoolsPrinter可以最大限度地实现对web页面的打印控制,比如,输出到哪个打印机,什么纸张类型,是否打印附件等。设置图文并茂的页眉、页脚,自动分页或程序分页。你也可以利用jatoolsPrinter随心所欲地定制出自己的打印设置界面,更好地满足项目需求。

jatoolsPrinter不同于报表工具,它只解决web客户端的html页面的打印问题,至于这些页面如何生成,格式怎样需要你自己做后端的开发(使用jsp,asp,或php等) ,因此,你可以有很大的自由度来定制格式。jatoolsPrinter也没有可视化的票据或报表设计工具,而一般报表工具都有可视化的报表设计器。jatoolsPrinter只需要在web服务器的一个目录中,放置一个控件文件即算配置完成,而报表工具一般在服务端需要配置报表服务引擎。

jatoolsPrinter是本公司报表产品杰表的一个组件,2006年起单独发展成品。如果你需要可视化的套打设计工具、各种格式(Excel,pdf)导出、表格无折断分页等更为强大的功能,建议你采用本公司的报表产品,杰表.2008。



安装:

服务端:可以是任何操作系统,任何web服务器,比如iis、tomcat、weblogic、websphere等。
客户端:windows操作系统(除win95/98外),Internet Explorer5.5及以上版本。

1. 服务端

先来看一个示例网页 test.htm

<html> 
... 
<OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255"  
codebase="jatoolsPrinter.cab#version=4,2,0,0"></OBJECT>

...
</html>

如果你访问该网页的地址是:

http://www.abc.com/print/test.htm 

则你必须将 jatoolsPrinter.cab放在 http://www.abc.com/print/jatoolsPrinter.cab 可以访问到的地方。总之,jatoolsPrinter.cab位置,需要根据当前网页路径与codebase属性,来确定。请体会以下示例:
例一、
网页地址:                    http://www.abc.com/print/test.htm
codebase属性:            xyz/jatoolsPrinter.cab#version=4,2,0,0
jatoolsPrinter.cab地址: http://www.abc.com/print/xyz/jatoolsPrinter.cab

例二、
网页地址:                    http://www.abc.com/print/test.jsp
codebase属性:            /jatoolsPrinter.cab#version=4,2,0,0
jatoolsPrinter.cab地址: http://www.abc.com/jatoolsPrinter.cab

2. 浏览器端

当你访问使用打印控件的网页时,浏览器将从服务器上下载控件,自动安装到ie中。 当然,如果你的IE安全设置过高,也可能不能自动安装,这时,你需要改变IE的安全设置,或进行离线安装。如果你需要离线安装,可以向我们申请离线安装包。 IE安全设置方法如下:

IE 浏览器->工具-> internet 选项->安全->自定义级别,设置下载未签名的 ActiveX启用状态。如下图所示:

 

注:jatoolsPrinter 4.0以后的版本,都经过微软认证的签名,因此,多数情况下无须设置IE安全属性。


快速入门

我们先来设计一个web页面,如下所示:

<html> 
<head>
<title>我的第一个打印文档</title>
</head>
<body bgcolor="#e0e0e0">
<div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>发票1 金额:80</div>
<div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>发票2 金额:100</div>
</body>
</html>
在这个文档中,有两个div对象,假设每个div中包括一张要打印的发票,现在要求是把这两张发票打印出来,而且,一张发票占据一页,如果你使用ie自带的打印菜单来打印,有可能只打印一页,有可能打印超过两页,有可能发票打印到一半时就分页,总之,如何分页取决于打印纸张的大小,及发票的大小,你不能控制页数及分页位置。那么,jatoolsPrinter是如何处理这样的需求的呢?
 

首先,我们在页面中插入这个控件,如下所示。  

<html> 
<head> <title>我的第一个打印文档</title>

<!-- 插入打印控件 --> <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=4,2,0,0"></OBJECT>

</head>
<body bgcolor="#e0e0e0">
<div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>发票1 金额:80</div>
<div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>发票2 金额:100</div>

</body>
</html>
 其次,调用控件的 print 方法实现打印,如下所示:  
function doPrint() 
{ 
       myDoc = { 
                documents:document;    // 要打印的div 对象在本文档中,控件将从本文档中的 id 为 'page1' 的div对象,作为首页打印 
                                                                         // id 为 'page2' 的作为第二页打印 
                }; 
       jatoolsPrinter.print(myDoc,false);   // 直接打印,不弹出打印机设置对话框       
}     
由上可见,你打印若干 div对象时,需要告诉控件,这些div们所属的文档对象(html的document对象),另外,这些div对象的id,也需要按 ‘page+序号‘ 的规则命名,序号从1开始计,也就是说,id为'page1'的div对象,总是作为首页打印。这些设置使用一个javascript对象来描述,也就是上面的myDoc对象,下面是完整的html代码:             
<html> 
<head>
<title>我的第一个打印文档</title>


<!-- 插入打印控件 --> <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=4,2,0,0"></OBJECT>
<script> function doPrint() {
myDoc = {  documents:document,   // 要打印的div 对象在本文档中,控件将从本文档中的 id 为 'page1' 的div对象,作为首页打印
                                                                         // id 为 'page2' 的作为第二页打印
             copyrights:'杰创软件拥有版权 www.jatools.com'         // 版权声明,必须
         };
       jatoolsPrinter.print(myDoc,false);   // 直接打印,不弹出打印机设置对话框       }  
</script>
</head>
<body bgcolor="#e0e0e0">

<div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>发票1 金额:80</div>
<div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>发票1 金额:100</div>

<input type="button" value="打印"  onClick=' doPrint()'>
</body>
</html>
运行示例

最后,有几点需要说明:


最简单的打印预览

下面是一个最简单的打印,打印按默认设置进行。运行此示例
//打印文档对象 
var myDoc ={ 

documents: document, // 打印页面(div)们在本文档中 
copyrights : '杰创软件拥有版权 www.jatools.com' // 版权声明必须 
}; 
... 
jatoolsPrinter.print(myDoc,false);  

打印前设置打印参数

你可以打印前设置打印参数,如设置输出的打印机,打印方向,纸张大小。 运行此示例
//打印文档对象 
var myDoc ={ 
settings:{ 
            // 如果想使用默认打印机,不需要设置 
             // printer: '联想激打', 

           // 指定纸张的高宽以毫米为单位z,本设置实际是指定为a4大小 
            pageWidth : 2100, 
          pageHeight : 2970, 

          // 指定打打印方向为横向, 1/2 = 纵向/横向 
           orientation : 2 }, 
documents: document, // 打印页面(div)们在本文档中 
copyrights : '杰创软件拥有版权 www.jatools.com' // 版权声明必须 
}; 

保留打印时的打印参数

可以保留打印时的打印参数,待下一次打印同一文档时自动配置打印参数 。运行此示例
//打印文档对象 
var myDoc ={ 
//待保留的打印设置id,打印后将被保存在注册表中, 
//下一次启动相同值的settingsID,打印文档时, 
//控件将用保留的参数,自动设置打印机 
settingsID:"mysettings1", 
documents: document, 
copyrights : '杰创软件拥有版权 www.jatools.com' 
}; 


为什么需要保存设置功能?

保存设置功能,通常用在以下两种情况:
(1)一个套打系统,由于各客户端打印机不同,或者进纸盒的位置不同,或者其他原因,可能引起打印出来的票据位置发生偏移,用户希望能根据自己打印机的状况,自行调整边距以纠正位置,但不希望每次打印前,都进行一次手工调整。
(2)一个客户端配置了多台打印机,分别用于打印不同类型的文档,用户不希望每次打印一个文档前,选择一次打印机;

对于第一种情况,你可以这样解决:
1. 页面中设置两个按钮,一个"直接打印",一个"打印预览";
2. 当客户发现位置有偏移时,可以点击"打印预览"按钮,调整左、上边距,并打印这个页面;
3. 如果发现位置还不理想,则重复第2步,如果正确,则下一次打印这个票据时,只需点击"直接打印"即可保证位置正确。

对于第二种多种打印机的情况,你可以这样解决:
1. 页面中设置两个按钮,一个"直接打印",一个"打印预览";
2. 第一次打印时,可以点击"打印预览"按钮,选择你想要的打印机进行打印;
3. 则下一次打印这个票据时,只需点击"直接打印"即可保证输出到正确的打印机。

提一点建议:因为"打印预览"按钮不常用,最好不要跟"直接打印"按钮并排放在一起,以避免干扰。

保存设置参数的工作原理是怎样的?

控件是如何保留设置参数的,有些用户感觉困惑,下面介绍一下保留与加载打印参数的工作原理。

保存设置参数原理:
1. 客户打印一个文档到打印机后;
2. 控件触发打印完成事件;
3. 控件响应打印完成事件,查询本次打印是否有myDoc.settingsID属性,如果有,则保存本次打印的配置参数到注册表(如果注册表中存在该id设置,则替换以前设置)。

所以,保存打印参数的前提是:已经输出到打印机,并且设置了myDoc.settingsID。 有些用户,只在控件的预览窗口中设置了边距等,而不实际打印,这样,控件是不会保留你的设置的。

加载打印参数原理:
1. 客户在预览或打印前,控件查询是否有 myDoc.settingsID属性;
2. 如果有myDoc.settingsID属性,控件尝试从注册表中读入该id相关的配置参数,如果存在,则用该配置参数来设置打印机(即忽略myDoc.settings里的设置),转第4步;
3. 根据用户的myDoc.settings里的设置,设置打印参数;
4. 根据设置,启动打印或打印预览。

第一次打印用当前配置,后续打印用最后一次打印配置

运行此示例
//打印文档对象 
var myDoc ={ 
settings:{   // 当前设置 
                 // printer: '联想激打', 
                 pageWidth : 2100, 
                 pageHeight : 2970, 
                 orientation : 2 
                 }, 

//第一次打印时,注册表中没有‘mysettings2’的打印参数 
//所以使用上面指定的参数 
//打印后,控件自动将最后一次打印设置保存 
//后续打印时将用注册表中的设置,来自动配置打印机 
//上述的settings将被忽略 
settingsID : "mysettings2", 

documents: document, 
copyrights : '杰创软件拥有版权 www.jatools.com' 
}; 

批量打印文档

运行此示例

注意,批量打印时,而且打印文档数超过一个,只能进行无提示的直接打印操作。

//打印文档对象 
var myDoc ={ 

//批量打印时,需要用数组来指定打印文档 
//文档页可以在一个document对象中,也可以在url指定的一个文档中 
documents: new Array( 
                       document, // 打印页面(div)们在正显示在本文档中 
                          'attaches1.htm', // 打印页面(div)们在一个url指定的文档中 
                          'attaches2.htm'
) 
copyrights : '杰创软件拥有版权 www.jatools.com' // 版权声明必须 
}; 

多个文档共存在同一web页面中,区别打印

运行此示例
//打印文档对象 
var myDoc ={ 

documents: document, 

// 在同一页面中,有多个可打印文档,他们可以用 
// pagePrefix  属性来区别 
// pagePrefix属性 +page+页序号 构成可打印div的id, 
// 如前缀为 'report1' ,则找到以 'report1page1'为id的 
// div作为文档首页 
// 该属性,默认值为空 
pagePrefix: whichreport.value, // 本例中,可能是 'report1'或'report2' 

copyrights : '杰创软件拥有版权 www.jatools.com' 
}; 
 

不显示文档,直接指定url打印

运行此示例
//打印文档对象 
var myDoc ={ 

//文档页可以在url指定的一个文档中,用数组指定打印文档 
documents: new Array('simpleprint.htm'), 
copyrights : '杰创软件拥有版权 www.jatools.com' // 版权声明必须 
}; 

打印隐藏对象

你可以使用属性 classesReplacedWhenPrint ,将一个对象在显示时定义为不可见,在打印或打印预览时,定义为可见,这通过预定一个css类实现。如下所示。 运行此示例
<style> 
... .only_for_print {display:none} ... </style>
... //左面是两个隐藏的页 <div id=page1 class='only_for_print' ...
<div id=page2 class='only_for_print' ...
... 打印印文档对象 var myDoc ={ ... // 打印时,only_for_print取值为显示 classesReplacedWhenPrint: new Array('.only_for_print{display:block}'), ... };

仅在预览时可见,不输出到打印机的套打底图

通过特殊的样式类 screen-only ,配合enableScreenOnlyClass 属性,你可以控制所有可视化元素要求其仅在预览时可见,如下图示。运行此示例
//打印文档对象 
var myDoc ={ 
       enableScreenOnlyClass:true   // 为了使screen-only起作用,必须设置 enableScreenOnlyClass为true                             
                                       经此设置,引用screen-only样式类的对象,只在显示或预览时可见,打印时不可见.      

}; 
... <img class='screen-only' src='background.jpg'  alt='本图片只在预览中可见'> <div class='screen-only title' > 本层中的内容只在打印预览时可见 </div> ...

打印结束后提交数据

下面一个示例,意图是在打印成功后,将打印数据提交到服务器保存。运行此示例
function doPrint() 
{ 
   myDoc = {... 
              documents: document,
                            }; 
   myDoc.done=function(err){ 
      if(!err)    
          myform.submit();       // 提交表单 
      else 
          alert(err);   
     } 
     jatoolsPrinter.print(myDoc,false);   // 直接打印,不弹出打印机设置对话框     

}       
... 

你可以在打印结束时,让控件自动调用一个脚本方法,回调方法必须通过打印对象的done属性来指定。在打印结束后,你可以通过该方法的err参数,来判断打印是否成功,err为空,则打印成功,非空在打印失败,err表示错误信息。


为什么要使用回调方法

不使用回调方法,按下面的代码运行可以吗?回答是不可以!

下面的代码错误。

function doPrint() 
{ 
    myDoc = {... 
               documents: document, 
               }; 
      
    jatoolsPrinter.print(myDoc,false);   // 直接打印,不弹出打印机设置对话框     
     myform.submit();       // 极端错误 
}       
... 

因为不管三七二十一,就提交了表单,提交后,当前窗口的document就会被新的文档替换,而打印控件对原文档还没有打印完,这时就会经常出现如下错误信息。


打印后关闭窗口

在回调方法(done)中调用window.close()即可;参照演示 运行此示例

可视化设计套打

在web套打程序的开发中,最烦琐的事情是打印内容与票据要保持一致,不能移位。在以前的版本中,如果用户想设计套打模板,必须通过网页设计工具做好网页,然后,放到杰表控件中来打印,如果发现打印内容的位置有偏差,再在网页设计工具中调整,然后再放到控件中,如此反复多次,效 率极低。现在有了可视化设计功能,可以使用户在控件中,就能调整位置,不仅如此,由于控件中指定位置,是在真实的、可视化的打印环境中,使用户不必考虑边距的问题,做到完全的所见即所得,可大大提升套打设计的效率。更多内容...

打印内容相对位置的事后调整及保存

在web套打程序的开发过程中,你可能会发现,即使是同一套打网页,在不同的打印机中,打印出来的相对位置,也有差别,有的打印机打印出来的内容凑得紧些,有的则离得开些,这种偏差不能通过设置打印机边距的方式进行调整。借助杰表打印控件的可视化设计功能,使用户可以根据自己的打印机状况,自行调整打印内容的位置,并保存到注册表,下次打印时,自动根据自设的位置进行打印。 这种微调,不会影响到其他打印机,这对有大量前台打印,并有不同类型打印机打印同一种票据的场合,非常实用。更多内容...


使用自动分页

设置 autoBreakPage属性为true即可;运行此示例

表格自动分页,表头每页可见

运行此示例

如果你有一个行数较多的表格,想分页打印,那么,仅仅使用上节介绍的自动分页功能是不够的,因为自动分页功能,会使表格线在折页处,出现被折断的情况,如下图所示:


这个问题在InternetExplorer 打印中,你也经常碰到,微软也没有给出一个彻底的解决办法。为解决这个问题,本控件采用动态分页技术,引入 autoBreakTable属性,来避免此种现象的发生。 以下是使用autoBreakPage属性后的不断线分页效果:



代码如下所示:
 
    myDoc = {... 
	      autoBreakPage:true,   // 使用autoBreakTable 必须同时设置 autoBreakPage 为true
	      autoBreakTable:{
                       id: 'break-table',  // 需要自动折页的表格 id
                       headerRows: 1      // 表格标题行数,  标题行将在每个页面中出现
                       
               }
              ...
            }; 
      
... 
<div id=page1>
    <h1 class='first-only'> 工资表 </h1>        // 所有只想在第一页中出现的对象,需要设置class属性为 first-only ,否则每页都显示 
    <table id='break-table'> ... </table>
</div>

双面打印

先打奇数页,再打偶数页,设置 myDoc.settings.doubleSide为true即可;运行此示例

显示页面设置对话框后打印

运行此示例
function print()
{
     var mySettings = jatoolsPrinter.showPageSetupDialog();  
     if(mySettings)
     {
         var doc = {settings: mySettings, 
         documents: document,
         copyrights: '杰创软件拥有版权 www.jatools.com' 
         }
         jatoolsPrinter.print(doc,false); // 不显示打印机选择对话框进行打印
     }
}     
 

选择打印机进行打印

运行此示例
function loadPrinters()
{
     var printers = jatoolsPrinter.getPrinters();   // 打印机列表是字符串数组
     if(printers)
     {
         for (i=0;i< printers.length;i++)
             printer_list.options[i+1]=new Option(printers[i],printers[i]);
             
         printer_list.options[0].selected = true;
     }
}
function print()
{
	var myDoc = { settings:{printer: printer_list.value},…}
	jatoolsPrinter.print(myDoc);
}

<select name="printer_list"/>


选择打印机,纸张类型,边距进行打印

选择打印机,纸张类型,边距进行打印。运行此示例

设置图文并茂的页脚页眉

运行此示例

 

用控件设置IE打印背景

运行此示例

IE默认是不打印背景色及背景图的,如果你想打印背景图,只需要设置控件的printBackground属性为true,即可,当然,IE提供了手工设置方法,如下:
IE 浏览器->工具-> internet 选项->高级->打印背景颜色和图像。

 


附录:API 参考手册

当你在网页中嵌入jatoolsPrinter控件后,你就可以使用 javascript 来调用该控件方法。其中常见的方法有打印输出(print),启动打印预览界面(printPreview),取得(getDefaultPrinter)和设置(setDefaultPrinter)默认打印机,显示页面设置对话框(showPageSetupDialog)等。下面是调用打印输出的一个示例:

<!—使用Object标签,嵌入jatoolsPrinter控件 -->
<OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=4,2,0,0"></OBJECT> 

<script type="text/javascript"> function print() { //打印文档对象 var doc ={ documents:document,    // 打印页面(div)们在本文档中 copyrights:'杰创软件拥有版权 www.jatools.com' }; jatoolsPrinter.print(doc); } … <div id=’page1’> … </div> <div id=’page2’> … </div>

公共方法

方法 
  print(Object doc,Boolean prompt): Boolean 
打印指定文档。
  printPreview(Object doc): Boolean  
预览打印文档。
  getPrinters(): Array  
取得系统已安装的打印机列表。
  getPapers(String printer): Array 
取得指定打印机的可用纸张列表。
  isCustomPaperSupported(String printer): Boolean 
判断指定打印机是否支持自定义纸张大小。
  getDefaultPrinter(): String  
取得系统的默认打印机。
  setDefaultPrinter(String printer): void  
设置系统的默认打印机。
  showPageSetupDialog(): Object 
显示纸张设置对话框,并取得纸张设置参数
  getLastSettings(String settingsID): Object 
取得指定打印设置settingsID,在注册表中保存的参数
  setLastSettings(String settingsID,Object settings): void 
设置某个文档打印参数,以后打印这个settingsID的文档时,自动按该设置打印

方法详情

print

function print(Object doc,Boolean prompt=false) : Boolean
打印指定文档。
参数:
  • doc: Object (必选)
    打印文档参数。你可以用这个参数来指定打印对象,设置打印页面参数。该对象有如下属性:
    • documents:Object/Array (必选)
      打印文档源。就是指定你需要打印的页面(<div id=page1….><div id=page2….>)在哪个document对象上。 如果你需要批量打印多个文档,你可以用字符串Array方式指定文档源,数组元素表示一个合法的文档url,url可以是绝对地址,也可以相对地址。如:
      new Array('http://www.jatools.com/abc.jsp','http://www.jatools.com/123.jsp&id=1');
      1. settingsID:String (可选)
        打印文档的设置参数ID。 如果你想让控件记住某个文档最后一次打印使用的设置,以便下一次打印同一文档时自动采用,则需要设置该属性。
        当你设置了该属性,且loadPrintSettingstrue, 则控件在打印前,自动从系统的注册表中查找对应的历史打印设置信息,如果找到,则采用找到的参数来设置打印机,此时忽略setttings属性中指定的纸张设置。如果没找到,则使用setttings属性中的设置。
        当你指定了该参数,且savePrintSettingstrue,则控件在打印后,即将打印参数保存到系统中,以便下一次打印同一settingsID的文档时取用。如果你不指定该参数,则系统不从注册表中装载,也不会将打印设置保存到注册表。
        可以保存的打印设置参数属性即是以下settings属性对象中的内容,比如输出打印机,页高、页宽等。
        1. settings:Object (可选)
      你可以使用这个参数来设置你的打印机输出,包括输出到哪个打印机、纸张大小、打印方向。当你指定了 settingsID属性,而且在系统中找到该settingsID的历史打印设置时,本属性所设无效,打印参数将依照历史参数设置之,而忽略本属性中的参数。参照settingsID属性。
      settings对象有如下属性:
      • printer:String (可选/默认值=系统默认打印机) 
        输出打印机,当你的系统安装了多台打印机时,比如,有针式打印机,激光打印机,你可以使用这个属性来设置你要求输出的打印机,如果不设置,系统将用默认打印机进行输出。
      • pageWidth / pageHeight:Number(可选/默认=打印机的默认纸张大小)
        打印纸张的宽度与高度,以1/10毫米为单位。pageWidth必须与pageHeight一起指定,如果仅指定一个参数,则系统忽略。
        如果你指定的纸张是非标准的纸张大小,控件会自动创建一个自定义纸张,如果你的打印机支持自定义纸张,则选用之,如果不支持,则不设置纸张。
        多数激光打印机,不支持自定义纸张。针式的票据打印机,一般都会支持。
        控件自动创建的自定义纸张名称类似这种形式 Custom 1000_9000,即按“Custom 宽_高”规则取名。
        你的打印机是否支持自定义纸张,可以通过控件的  custompapersupport.htm 来测试,该测试页面使用使用控件方法 isCustomPaperSupported 来测试。
      • topMargin / leftMargin / bottomMargin / rightMargin:Number(可选/默认值=打印机默认边距)
        你可以使用上述属性设置页边距。topMargin, leftMargin, bottomMargin, rightMargin分别表示上,左,下,右边距,单位是 1/10毫米 。多数打印机有最小边距问题,如果你的设置太小,将不会起作用。
      • orientation:Number(可选/默认值=打印机默认纸张方向)
        打印方向,以纵向还是横向打印,纵向取值为1,横向为2。
      • header:Object (可选/默认值=不显示页眉) 页眉对象。该对象有两个属性,分别是:
        • html: String/HTML Element(必选)
          html对象,可以是包含html标签的字符串,也可以是一个HTML Element,比如<div>对象。本属性中,可以包含以下宏变量,以取得相应的页号或时间。
          宏变量含义
             #p当前页号
             #P总页数
             #d当前日期,以控制面板/区域与语言选项中设置的短日期格式
             #D当前日期,长日期格式
             #t当前时间,短时间格式
             #T当前时间,长时间格式
        • height:Number(必选)
        • 页眉对象的高度,以象素为单位
      • footer:Object (可选/默认值=不显示页脚)
        页脚对象。属性与页眉对象一致。
    • done:function(err:String) (可选)
      打印结束时调用。如果打印成功,则err为空,如果打印出错,err表示出错原因信息。注意,这里的打印成功,表示打印内容已经成功发送到打印队列,并不表示已经成功输出到打印机,也就是说,一些打印机错误,比如卡纸等情况,不在此函数监控之列。
    • pagePrefix:String (可选/默认值='') 打印页面ID的前缀, 控件查找打印页面序列的规则是:
      pagePrefix +'page'+页序号(以1开始递增)
      如本属性为 'doc1' ,则控件以 doc1page1,doc1page2,…这样的顺序查找打印页。
    • autoBreakPage:Boolean(可选/默认值=false)
      是否自动分页打印。true为自动分页,false为不自动分页。当自动分页时,page1,page2…指定的内容如果一页打印不下时,打印不下的内容会自动另起一页打印。false时,控件隐藏打印不下内容(不会另起一页打印)
      如果有一个表格,行数可能超过一页,你不想用程序分页,你就可以将这个大表格放在page1中,然后,设定autoBreakPagetrue,从而让控件来帮你分页。
    • loadPrintSettings:Boolean (可选/默认值=true)
      是否从注册表中,装载历史设置,如果是则装载,反之不装载。应与settingsID属性配合使用,参照settingsID属性。
    • savePrintSettings:Boolean (可选/默认值=true)
      是否将最后一次打印参数,保存到注册表中,如果是则保存,反之不保存。应与settingsID属性配合使用,参照settingsID属性。
    • classesReplacedWhenPrint:Array(可选)
      在打印时替换 css类选择器的定义。你可以在打印或打印预览时,动态地修改这个类的定义。
    • copyrights:String (必选)
      版权信息,取值必须为'杰创软件拥有版权 www.jatools.com'。
  • prompt:Boolean(可选/默认值=false)
    是否在打印前显示打印机选择对话框。
返回:
  • Boolean
    是否可以打印。如果false表示doc参数设置有问题,不能打印。如果true,表示可以打印。

printPreview

function printPriew(Object doc) : Boolean
预览打印文档。
参数:
  • doc: Object (必选)。
    参照print 方法
返回:
  • Boolean
    是否可以打印预览。如果false表示doc参数设置有问题,不能预览,如果true,表示可以预览。

getPrinters

function getPrinters() : Array
取得系统已安装的打印机列表。
参数:
返回:
  • Array
    可用的打印机名称数组。如果没有安装任何打印机,则返回为null。
示例:将取得的可用打印机列表,显示在表单的HTML Select对象上:
…
function loadPrinters()
{
     var printers = jatoolsPrinter.getPrinters();
     if(printers))
     {
         for (i=0;i< printers.length;i++)
             printer_list.options[i]=new Option(printers[i],printers[i]);
     }
}
loadPrinters();
…
<FORM >
<Select name="printer_list"> </FORM >

getPapers

function getPapers(String printer) : Array
取得指定打印机的可用纸张列表
参数:
返回:
  • Array
    可用的打印机名称数组。如果没有安装任何打印机,则返回为null。
示例:将取得的可用打印机列表,显示在表单的HTML Select对象上:
…
function loadPapers()
{
     var printers = jatoolsPrinter.getPrinters(); 
     if(printers)
     {
        var papers = jatoolsPrinter.getPapers(printers[0])
        if(papers)
        {
           for (i=0;i< papers.length;i++)
           {
               var name = papers[i].name;
               var dimension = {
			width:papers[i].width,
			height:papers[i].height};
               paper_list.options[i]=new Option(name, dimension);
	   }
	}
     }
}
loadPapers();
…
<FORM >
<Select name=" paper_list" >
</FORM >

isCustomPaperSupported

function isCustomPaperSupported(String printer) : Boolean
判断指定打印机是否支持自定义纸张大小。 一般针式打印机都支持自定义纸张,而部分激光打印机不支持。
参数:
  • printer:String(必选)
    指定打印机名称。
返回:
  • Boolean
    true 表示支持自定义纸张,false 表示不支持。

getDefaultPrinter

function getDefaultPrinter () : String
取得系统的默认打印机
参数:
返回:
  • String
    默认打印机名称,如果为空,表示没有安装任何打印机。

setDefaultPrinter

function setDefaultPrinter(String:printer) : Boolean
设置系统的默认打印机。
参数:
  • printer:String(必选)
    指定默认打印机名称。
返回:
  • Boolean
    true为设置成功,false为设置不成功。

showPageSetupDialog

function showPageSetupDialog() : Object
显示纸张设置对话框,并取得纸张设置参数。
参数:
返回:
  • Object
    纸张对话框中设置的参数,用户点击了取消按钮后,,返回值为null,用户点击确定,则返回Object对象,包括以下属性:
    • pageWidth / pageHeight:Number 纸张宽度和高度(以1/10毫米为单位,下同)。
    • topMargin / leftMargin / bottomMargin / rightMargin:Number 纸张的上左下右的边距。
    • orientation:Number 纸张方向:1代表纵向;2代表横向。
示例:让用户选择纸张类型,然后无提示打印:
function printWithSetupPage()
{
     var mySettings = jatoolsPrinter.showPageSetupDialog(); 
     if(mySettings)
     {
         var doc = {settings: mySettings,
		  documents: document,
		  copyrights: '杰创软件拥有版权 www.jatools.com'
	}
	jatoolsPrinter.print(doc,false); // 不显示打印机选择对话框进行打印
      }             
}

getLastSettings

function getLastSettings(String settingsID): Object
取得指定打印设置settingsID,在注册表中保存的参数。
参数:
  • settingsID:String(必选)
    需要取得设置的ID。
返回:
  • Object
    保存在注册表中对应settingsID的打印设置,如果null则表示无指定settingsID的打印设置,如果存在则返回Object对象,包括以下属性:
    • printer:String 输出打印机名称。
    • pageWidth / pageHeight:Number 纸张宽度和高度(以1/10毫米为单位,下同)。
    • topMargin / leftMargin / bottomMargin / rightMargin:Number 纸张的上左下右的边距。
    • orientation:Number 纸张方向:1代表纵向;2代表横向。

setLastSettings

function setLastSettings(String settingsID,Object settings) : void
设置某个文档打印参数,以后打印这个settingsID的文档时,自动按该设置打印。
参数:
  • settingsID:String(必选)
    需要设置的打印设置ID。
  • settings :Object(必选)
    打印设置对象,有如下属性:
    保存在注册表中对应settingsID的打印设置,如果null则表示无指定settingsID的打印设置,如果存在则返回Object对象,包括以下属性:
    • printer:String 输出打印机名称。
    • pageWidth / pageHeight:Number 纸张宽度和高度(以1/10毫米为单位,下同)。
    • topMargin / leftMargin / bottomMargin / rightMargin:Number 纸张的上左下右的边距。
    • orientation:Number 纸张方向:1代表纵向;2代表横向。
返回:


JATOOLS SOFTWARE CO.,LTD. - Copyright © 2009-2010
All rights reserved.