JATOOLSPRINTER控件

开发性 专栏收录该内容
36 篇文章 0 订阅

jatoolsPrinter 使用手册

 



简介:

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,0,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,0,0,0
jatoolsPrinter.cab地址: http://www.abc.com/print/xyz/jatoolsPrinter.cab

例二、
网页地址:                    http://www.abc.com/print/test.jsp
codebase属性:            /jatoolsPrinter.cab#version=4,0,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,0,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,0,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>

运行示例

最后,有几点需要说明:

  • 1. 控件在打印指定div对象时,如果纸张太小不够打印时,超出部分将被截掉(clip)。如果你不想被截掉,你可以使用自动分页功能,参照自动分页打印 。
  • 2. 被指定的div中的内容,可以是html任何可见对象,图片,flash,或文本等等。
  • 3. 控件打印时,边距可设,不设则取打印机默认值。
  • 4. div的id必须连续,如果你的div,存在 'page1'、‘page2’、‘page4’,而不存在‘page3’,则控件只打印前两页,'page4'不会被打印。
  • 5. div对象在页面中的位置,可以是随意的,比如,page1显示在page2后面,也是合法的。
  • 6. 指定的div会被打印,没被指定的html元素将不会被打印,比如,本示例中的‘打印’按钮。
  • 7. copyrights属性是版权信息,必须写。

 


最简单的打印预览

下面是一个最简单的打印,打印按默认设置进行。运行此示例

//打印文档对象 
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}'), ... };


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

通过特殊的样式类 hide_for_jatools_print,你可以控制所有可视化元素要求其仅在预览时可见,如下图示。运行此示例

<style> 
<!-- 套打底图,在预览时需要显示,但不打印,为达到此效果,你可以新增样式类,如下所示--> .hide_for_jatools_print {} // 空的样式类 .title{ ... ... } </style>
... <img class='hide_for_jatools_print' src='background.jpg'  alt='本图片只在预览中可见'> <div class='hide_for_jatools_print 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()即可;参照演示 运行此示例

使用自动分页

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

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

很多用户在做表格类报表的时候,希望表格能自动分页,且表头每页都可见,4.0新增加的autoBreakPage属性可以实现此需求。运行此示例

双面打印

先打奇数页,再打偶数页,设置 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"/>


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

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

设置图文并茂的页脚页眉

运行此示例

 

 


附录: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,0,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代表横向。
返回:

 

  • 0
    点赞
  • 4
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值