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 第一个参数表示,要检测哪一台打印机,第二个参数是回调函数,当打印机空闲时,result为0,非0时,表示打印机存在错误。
可以同时出现多种错误状态,你可以用 & 操作符来检测是否出现了某种错误。
isPrinterError 方法可以检测打印机本身的错误,也可以检测该打印机打印队列中出现的错误。
打印机本身的错误,显示在控制面板的打印机与设置中,如下所示:
打印队列中出现的错误,如下:
1.9 取版本号取云打印版本号 用 getVersion 取得 JCP 的当前版本号: 1. getJCP().getVersion(function(version) { 2. console.log("当前版本号:" + version); 3. });
1.10 弹出关于对话框关于... 为了查看更多信息,如版本号、编译日期、授权信息等,你可以用about方法,让 JCP 弹出关于…对话框: 1. getJCP().about();
|