您的位置:首页 > Web前端 > JavaScript

StratoIO WebPrinter 是什么?StratoIO WebPrinter实现打印的过程,StratoIO WebPrinter Javascript API

2017-09-20 17:53 671 查看
Strato WebPrinter是一款面向HTML浏览器的Web打印代理软件,WebPrinter提供了简单而又灵活的API,浏览器与WebPrinter的交互均通过Javascript API完成。

一、 引入Javascript API

Strato WebPrinter的Javascript API非常小,只有不到7K。我们提供了CDN地址,可以直接引用CDN,也可以转存到项目引用。

CDN地址可以从下载中心获得。

引用Javascript API只需在…节点加入如下代码:

<head>
……
<script type="text/javascript" src="http://cdn.stratoio.com/webprinter/1.1/webprinter.js"></script>
……
</head>


二、 获得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:"<span style=’color:red’>Hello</span><strong>world!</strong>"
});


下面是更多示例:

交互式打印,将会弹出确认界面

wp.newTask({
name:"任务",
content:"HTML内容",
interactive:true,
……
}
4000
);




内容中禁用Javascript

wp.newTask({
name:"任务",
content:"HTML内容<script>some scripts…</script>",
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<N;i++){
wp.newTask({
name:”任务”,
content:”HTML内容”
……
});
}




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<len;i++){
var task=tasks[i];
var name=task.name;
var printer=task.printer||”默认”;
…
}
}
});


也可以不设置状态,查询所有任务:

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<len;i++){
var printerName=printerNames[i];
……
}
}
},function(){
alert(“连接打印代理失败”);
});


b)得到默认打印机名称

wp. getDefaultPrinter(function(printerName){
alert(“当前默认打印机为”+printerName);
});


c)得到打印机支持的纸张类型

var printerName=”Microsoft Print To PDF”;
wp.listSupportedPapers(defaultPrinter,function(papers){
for(var i=0;i<papers.length;i++){
var paper=papers[i];
alert("Supported paper:"+paper.name+"("+paper.width+"pt * "+paper.height+"pt)");
}
});


八、 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  api stratoio web打印