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

来源:互联网 发布:信仰的定义知乎 编辑:程序博客网 时间:2024/06/03 02:26

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,    ……});

这里写图片描述

内容中禁用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

阅读全文
0 0
原创粉丝点击