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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控件功能强大,却简单易用,所有调用如同JavaScript扩展语句, 主要接口函数如下: PRINT_INIT 打印初始化 SET_PRINT_PAGESIZE 设定纸张大小 ADD_PRINT_HTM 增加超文本项 ADD_PRINT_TEXT 增加纯文本项 ADD_PRINT_TABLE 增加表格项 ADD_PRINT_SHAPE 画图形 SET_PRINT_STYLE 设置对象风格 PREVIEW 打印预览 PRINT 直接打印 PRINT_SETUP 打印维护 PRINT_DESIGN 打印设计 ... 样例清单 1.如何在页面内嵌入控件见样例一 2.如何选材打印当前页面内容见样例二 3.如何用代码生成打印页见样例三 4.如何打印设计和定位套打见样例四 5.如何控制纸张大小和连续打印见样例五 6.如何输出多页长文档及双面打印见样例六 7.如何定向输出见样例七 8.如何打印图片见样例八 9.如何用程序加载打印维护背景图见样例九 10.如何控制打印样式(STYLE)见样例十 11.如何直接打印条形码见样例十一 12.如何读写本地文件见样例十二 13.如何打印旋转内容见样例十三 14.如何按URL打印见样例十四 15.如何打印表格的页头页尾见样例十五 16.如何设置预览窗口大小见样例十六 17.如何发打印机指令或直接读写端口见样例十七 18.如何打印幅面高度不固定的票据见样例十八 19.如何内嵌显示及预览时包含背景图见样例十九 20.如何强制分页并预览多页卡片见样例二十 21.如何控制打印维护的功能权限见样例二十一 22.如何构建自己的纯WEB打印预览见样例二十二 23.如何居中打印超文本见样例二十三 24.如何选择界面皮肤见样例二十四 25.如何指定输出到哪页或仅预览见样例二十五 26.如何提高多页打印的性能见样例二十六 27.如何导出数据到Excel文件见样例二十七 28.如何快速读取客户端系统信息见样例二十八 29.如何使用其它长度单位见样例二十九 30.如何分页输出页面内容见样例三十 31.如何打印表格的分页小计或合计见样例三十一 32.如何实现清晰的图表打印见样例三十二 33.如何实现甘特图等的图表打印见样例三十三 34.如何使用百分比%和满页打印见样例三十四 35.如何获得打印结果和程序代码见样例三十五 36.如何在设计过程中用js编辑内容见样例三十六 37.如何打印公章效果图见样例三十七 38.如何用BASE64编码输出图片见样例三十八 39.如何打印田字格、上划线等文本见样例三十九 40.如何进行数据格式转换见样例四十 41.如何把内容关联后按顺序打印见样例四十一 42.如何把整页内容缩放打印见样例四十二 43.如何分页打印综合表格见样例四十三 44.如何缩放打印单个超文本内容见样例四十四 45.如何获得打印状态及最终结果见样例四十五 46.如何设置右边距和下边距见样例四十六
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值