一、 引入Javascript API
Strato WebPrinter的Javascript API非常小,只有不到7K。我们提供了CDN地址,可以直接引用CDN,也可以转存到项目引用。
CDN地址可以从下载中心获得。
引用Javascript API只需在…节点加入如下代码:
…… ……
二、 获得WebPrinter实例
a)获得默认的WebPrinter实例
可以在引入Javascript API文件后的任意位置获取WebPrinter实例。
var wp=Strato.WebPrinter.getInstance();
b)获得定制参数的WebPrinter实例
也可通过
var wp=Strato.WebPrinter.getInstance(jsonConfig);
获得定制参数的WebPrinter实例。
目前仅支持指定host和accesskey两个属性,详细参数请参看"Remote Javacript API"。
三、 感知WebPrinter运行
a)获得打印代理当前状态
可以通过isConnected函数获取连接状态,例如:
if(wp. isConnected()){ alert("已连接"); }else{ alert("已断开"); }
完整方法列表及详释请参看表一。
b)监听代理状态变化
也可以借助事件机制动态感知状态变化,例如:
wp.on("CONNECTED",function(){ alert("已连接"); }); wp.on("DISCONNECTED",function(){ alert("已断开"); });
事件详情请参考表二。
WebPrinter感知通常用于根据打印代理状态给用户不同的提示。如下载安装、启动代理程序等。
下列代码可以直接用于判断WebPrinter的连接状态:
下列代码可以直接用于判断WebPrinter的连接状态:
(function(){ var wp=Strato.WebPrinter.getInstance(); If(wp.isConnected()){ //TODO handleConnected(); }else{ //TODO handleDisconnected(); } wp.on("CONNECTED",function(){ //TODO handleConnected(); }); wp.on("DISCONNECTED",function(){ //TODO handleDisconnected(); }); })();
四、 License查询与更新
a)查询License信息
打印代理必须在安装了正确的License才能执行打印。License的试用及购买事宜请参考产品价格。
可以借助getLicense(callback)函数查询License。
License的查询必须在连接后执行,参看下面的代码:
wp.on("CONNECTED",function(){ wp.getLicense(function(license){ if(license){ var customerName= license.customerName;//客户名称 var startDate=new Date(license.startDate); var endDate=new Date(license.endDate); var type=license.type;//License类型,1-开发授权,2-标准版,3-高级版,4-定制版 }else{ alert("尚未安装授权"); } }); });
b)更新License
可以借助installLicense(licenseText)函数更新License信息,licenseText请注册后申请开发授权或购买正式版本。
License的更新也要在连接后执行,
wp.on("CONNECTED",function(){ var licenseText="…………";//申请开发授权或购买正式授权 wp.installLicense(licenseText); });
五、 任务管理
当连接上代理、安装好正确的License后,即可调用Javascript API进行打印。
a)发送打印任务
可通过newtask(task,callback)函数发送任务到代理,下面代码演示了最简单的任务发送:
wp.newTask({
name:"测试打印任务",
content:"Helloworld!"
});
下面是更多示例:
交互式打印,将会弹出确认界面
w
p.newTask({ name:"任务", content:"HTML内容", interactive:true, …… });
内容中禁用Javascript
wp.newTask({ name:"任务", content:"HTML内容", javascript:false,//默认为true …… });
指定打印机
wp.newTask({ name:"任务", content:"HTML内容", printer:"Microsoft Print to PDF", …… });
设定页边距
wp.newTask({ name:"任务", content:"HTML内容", config:{ marginLeft:2,//毫米 marginRight:2,//毫米 marginTop:3,//毫米 marginBottom:4,//毫米 } });
打印多份
要打印多份文档,有多种选择,可以发送多次任务,也可以传入copies配置。
for(var i=0;i
或
wp.newTask({ name:”任务”, content:”HTML内容”, config:{ copies:N, collate:” COLLATE”,//”UNCOLLATE” } });
设置纸张
wp.newTask({ name:”任务”, content:”HTML内容”, config:{ width:56.5,//纸张宽度,单位mm height:48.2,//纸张高度,单位mm …… } });
更多选项
wp.newTask({ name:”任务”, content:”HTML内容”, color:”MONOCHOME”,//黑白打印 side:”ONESIDE”,//单面打印 orientation:”PORTRAIT”,//纵向打印 quality:”HIGH”,//高质量打印 …… });
打印URL
wp.newTask({ name:”打印URL”, type:”URL”, content:”http://www.sina.com.cn”, timeout:10*1000,//10 秒 timeoutAction:”PROCEED”//超时仍然打印 });
下面界面中的所有设置均可通过API传入,具体参数参考表三。
b)接收任务提交结果
可在newTask第二个参数传入回调函数来判断任务是否正常提交。
wp.newTask(task,function(id,status){ if(status==200){ alert(“任务提交成功”); }else if(status==404){ alert(“服务未启动”); }else{ alert(“任务提交失败”); } });
c)查询任务列表
可以通过listTasks(statusArray,callback)来查询任务,如:
wp.listTasks(["SUBMITTED","CANCELED"],function(tasks){//查询已提交和已取消的任务 if(tasks!=null){ for(var i=0,len=tasks.length;i
也可以不设置状态,查询所有任务:
wp.listTasks([],function(tasks){//查询已提交和已取消的任务 …… });
六、 页眉页脚/文字水印
a) WebPrinter盒模型
下图为WebPrinter进行打印时渲染的盒模型。
说明:
①为打印边距,可通过JS API的config对象传入,包括marginLeft、marginRight、marginTop和marginBottom,单位为mm。建议在排版时,将这些值设为0或一个很小的数(如0.1),只要完整内容能够在实际打印区域内即可。
②为内容边距,由开发者在打印HTML内通过CSS自行排版设置。例如:
body{ margin:15mm 10mm 15mm 10mm /* 上右下左 */ }
b) JS API配置
i.概述
JS API通过config的labels属性传入标签,支持同时传入多个标签,以下是代码示例:
wp.newtask({ content:SOME_HTML, config:{ marginLeft:0, marginTop:0, marginRight:0, marginBottom:0 }, labels:[ {//在右下角打印页码 text:”第{pageNo}页,共{pageCount}页”, position:”RB”,//支持LT、MT、RT、LB、MB、RB、MM fontColor:”black”, fontFamily:"Microsoft YaHei",//微软雅黑 fontSize:"12"//文字大小 }, {//在顶部中央打印标题 text:”XX项目可行性调研报告”, position:”MT”, fontColor:”black”,//支持16进制色,如#FFFFFF fontFamily:"SimSun",//宋体 fontSize:"24"//文字大小 }, {//在正中打印文字水印 text:”YYY软件公司”, position:”MM”, fontColor:”gray”, fontFamily:"Microsoft YaHei",//微软雅黑 fontSize:"24" } ] });
ii. 支持的变量
目前支持pageNo(代表当前页)和pageCount(代表总页数)。
iii. 支持的位置
目前支持LT、MT、RT、LB、MB、RB、MM,详见盒模型示意图。
七、 打印机管理
a)获得打印机列表
有时候,开发者可能要列出系统的所有打印机供用户选择,或根据业务逻辑自动选择合适的打印机,这时需要用到listPrinter(successCB,errorCB)函数。例如:
wp.listPrinters(function(printerNames){ if(printerNames){ for(var i=0,len=printerNames.length;i
b)得到默认打印机名称
wp. getDefaultPrinter(function(printerName){ alert(“当前默认打印机为”+printerName); });
c)得到打印机支持的纸张类型
var printerName=”Microsoft Print To PDF”; wp.listSupportedPapers(defaultPrinter,function(papers){ for(var i=0;i
八、 Remote Javascript API
如果您购买的是定制安装版本,则可以从网络上的其他电脑通过JS API访问打印代理。API只需在getInstance之前设置目标代理地址即可,可以是IP或者域名。例如:
Strato.WebPrinter.setup({ host:”192.168.0.2”//假设192.168.0.2上安装了打印代理 }); var wp=Strato.WebPrinter.getInstance(); ……
从安全角度考虑,我们强烈建议定制版用户在控制面板的系统设置界面设定accesskey,如图:
则JS API中需在setup时传入正确的accesskey,
Strato.WebPrinter.setup({ host:”192.168.0.2”, accesskey:”someaccesskey” }); var wp=Strato.WebPrinter.getInstance(); ……
附表:
表一:WebPrinter方法一览
表二:WebPrinter事件一览
表三:Task参数一览
文章来源:转自 http://webprint.stratoio.com/doc/jsapi