O  阅读本文档前,请先阅读 JCP 快速入门》

1       常用基本功能

常用基本功能,是指你可以在所有的JCP版本中都可以使用的功能,包括网页打印专用版,PDF专用版,Office专用版。

1.1   取系统安装的打印机

取打印机列表

你可以用 JCP getPrinters方法,取得系统已经安装的打印机:

1.  getJCP().getPrinters(function(printers) {  

2.              for (var i = 0; i < printers.length; i++) {  

3.                  console.log(printers[i]);  

4.              }  

5.          })  

 

getPrinters的唯一参数是一个回调函数,由JCP 取到打印机后调用。回调函数的唯一参数类型为字符串数组,每个元素表示取到的打印机名称。

 

提示:

可以将取到的打印机填充到<select>,方便用户进行打印机选择设置,比如,由用户在web页面上选择打印机打印,而不是在弹出打印机选择对话框进行打印。

 

1.2   取得与设置默认打印机

取得与设置默认打印机

你可以用 JCP getDefaultPrinter 取得系统的默认打印机,用setDefaultPrinter方法设置默认打印机:

1.  // 将最后一个打印机,设置为默认打印机  

2.  getJCP().getPrinters(function(printers) {  

3.              if (printers.length) {  

4.                  getJCP().setDefaultPrinter(printers.pop(), function() {  

5.                              // 取得新的默认打印机  

6.                              getJCP().getDefaultPrinter(function(result) {  

7.                                          console.log(result);  

8.                                      })  

9.                          })  

10.             }  

11.         })  

1.3   取指定打印机纸张

取指定打印机纸张

你可以用 JCP getPapers 方法取得某个打印机的可用纸张,这些纸张包括系统默认纸张和自定义纸张:

1.  var printer = "HP LaserJet M1005";  

2.  getJCP().getPapers(printer, function(papers) {  

3.              for (i = 0; i < papers.length; i++) {  

4.                  console.log(papers[i].name);  

5.              }  

6.          });  

getPapers 的第一个参数,表示你要取哪一台打印机的纸张。

 

第二个参数是回调函数,JCP取得纸张后会调用它,回调函数有一个参数,表示取到的纸张对象数组,该对象的最重要属性是 name,表示纸张名称,如 "A4""A5"等。

 

提示:

可以将打印机的可用纸张,填入到<select>供用户选择。

 

1.4   取打印机状态

取打印机状态

你可以用 getPrinterStatus 取得打印机的状态,如正在打印,还是缺墨等,如下所示:

1.  var printer = "HP LaserJet M1005";  

2.  // 取得打印机状态码  

3.  getJCP().getPrinterStatus(printer, true /*true取得状态码,false取得状态说明*/function(result) {  

4.              if (result & 0x00000010) {  

5.                  console.log("缺纸.");  

6.              }  

7.              if (result & 0x00040000) {  

8.                  console.log("没有墨粉了.");  

9.              }  

10.             console.log(result);  

11.         });  

getPrinterStatus第一个参数表示要取状态的打印机,第二个参数表示你要取的是状态码,还是状态说明文本,true为状态码,本例是取状态码。

 

第三个参数是回调函数,传回的参数表示取到的状态码(或者是状态说明文本)。

 

一台打印机可以并存多种状态,比如,打印机既可以缺纸,同时又可以没有墨粉,所以,取到的状态码是一个长整型,表示各状态组合,你可以使用符号 & 来检测是否有某状态,所有可用的状态及编码,参考 getPrinterStatus

 

提示:

状态只有在打印机有打印任务时,才能获取,也就是说:

1. 你没有打印任何东西,这时,虽然你的打印机可能正处于缺纸状态,用getPrinterStatus方法,也可能返回的是“就绪”状态,而不是“缺纸”

2. 只有你打印了而打印机缺纸,这个时候,调用 getPrinterStatus,才会报“缺纸”。

1.5   获取打印机信息

取打印机信息

你可以使用 getPrinterInfo方法,取得打印机的名称、端口等信息,如下所示:

1.  var printer = "HP LaserJet M1005";  

2.  getJCP().getPrinterInfo(printer, function(info) {  

3.              console.log(info.serverName); // 服务名  

4.              console.log(info.printerName); // 打印机名称  

5.              console.log(info.shareName); // 共享名  

6.              console.log(info.port); // 端口  

7.              console.log(info.jobs); //未打印任务数  

8.              console.log(info.status); // 状态码,参考  getPrinterStatus

9.          });  

 

1.6   取打印机可用功能

取打印机可支持功能

有时,你想知道打印机是否支持某些功能,比如,是否支持彩色打印,是否支持双面打印等,这时,你可以使用 getPrinterCapability 方法:

1.  var printer = "HP LaserJet M1005";  

2.  getJCP().getPrinterCapability(printer, "colordevice"function(result) {  

3.              console.log("彩色打印机?" + result);  

4.          });  

5.  getJCP().getPrinterCapability(printer, "duplex"function(result) {  

6.              console.log("可双面打印?" + result);  

7.          });  

第一个参数表示要对哪一台打印机进行查询,第二个参数表示功能关键字,第三个参数回调函数,传回查询结果。

 

如代码所示,功能关键字colordevice,表示查询是否支持彩色打印,duplex表示查询是否支持双面打印,当然,还有更多的功能关键字可用,参照:getPrinterCapability

 

1.7   取打印任务信息

取打印任务

你可以使用 getPrinterJobs 方法取得某台打印机打印队列中的打印任务,如下所示:

1.  var printer = "HP LaserJet M1005";  

2.  getJCP().getPrinterJobs(printer, function(jobs) {  

3.              for (i = 0; i < jobs.length; i++) {  

4.                  var job = jobs[i];  

5.                  console.log(job.id); // 打印任务id  

6.                  console.log(job.pagesPrinted); // 已经被打印数  

7.                  console.log(job.position); //打印任务在队列中的位置  

8.                  console.log(job.priority); // 优先级  

9.                  console.log(job.status); // 任务状态码  

10.                 console.log(job.title); // 名称  

11.                 console.log(job.totalPages); // 总页数  

12.             }  

13.         });  

回调函数返回的是一个Javascript 对象数组,每个元素表示一个打印任务。

 

1.8   检测打印机是否出错

检测打印机是否出错

你可以使用 isPrinterError 方法来检测打印机是否出错了,如下所示:

1.  var printer = "HP LaserJet M1005";  

2.  getJCP().isPrinterError(printer, function(result) {  

3.              if (result) {  

4.                  var errors = [];  

5.                  if (result & 0x00000001) {  

6.                      errors.push('打印机错误');  

7.                  }  

8.                  if (result & 0x00000002) {  

9.                      errors.push('卡纸了');  

10.                 }  

11.                 if (result & 0x00000004) {  

12.                     errors.push('纸用完了');  

13.                 }  

14.                 if (result & 0x00000008) {  

15.                     errors.push('打印纸有问题了');  

16.                 }  

17.                 if (result & 0x00000010) {  

18.                     errors.push('输出盒满了');  

19.                 }  

20.                 if (result & 0x00000020) {  

21.                     errors.push('打印机不可用');  

22.                 }  

23.                 if (result & 0x00000040) {  

24.                     errors.push('没墨了');  

25.                 }  

26.                 if (result & 0x00000080) {  

27.                     errors.push('内存耗尽');  

28.                 }  

29.                 if (result & 0x00000100) {  

30.                     errors.push('脱机中');  

31.                 }  

32.                 if (result & 0x00000200) {  

33.                     errors.push('打印机门未关上');  

34.                 }  

35.                 if (result & 0x00000400) {  

36.                     errors.push('打印任务错误');  

37.                 }  

38.                 if (result & 0x00000800) {  

39.                     errors.push('脱机中');  

40.                 }  

41.                 if (result & 0x00001000) {  

42.                     errors.push('纸用完了');  

43.                 }  

44.                 if (result & 0x00002000) {  

45.                     errors.push('堵了');  

46.                 }  

47.                 console.log(errors.join(","));  

48.             } else {  

49.                 console.log("空闲");  

50.             }  

51.         });  

 

方法 isPrinterError 第一个参数表示,要检测哪一台打印机,第二个参数是回调函数,当打印机空闲时,result0,非0时,表示打印机存在错误。

 

可以同时出现多种错误状态,你可以用 & 操作符来检测是否出现了某种错误。

 

isPrinterError 方法可以检测打印机本身的错误,也可以检测该打印机打印队列中出现的错误

 

打印机本身的错误,显示在控制面板的打印机与设置中,如下所示:

 

打印队列中出现的错误,如下:

 

1.9   取版本号

取云打印版本号

getVersion 取得 JCP 的当前版本号:

1.  getJCP().getVersion(function(version) {  

2.              console.log("当前版本号:" + version);  

3.          });  

 

1.10     弹出关于对话框

关于...

为了查看更多信息,如版本号、编译日期、授权信息等,你可以用about方法,让 JCP 弹出关于对话框:

1.  getJCP().about();