Strato WebPrinter是一款面向HTML浏览器的Web打印代理软件,WebPrinter提供了简单而又灵活的API,浏览器与WebPrinter的交互均通过Javascript API完成。
一、 引入Javascript API
Strato WebPrinter的Javascript API非常小,只有不到7K。我们提供了CDN地址,可以直接引用CDN,也可以转存到项目引用。
CDN地址可以从下载中心获得。
引用Javascript API只需在<head>…</head>节点加入如下代码:
<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>"
});
下面是更多示例:
交互式打印,将会弹出确认界面
w
p.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
分享到:
相关推荐
《达诺视通Strato多媒体信息发布系统操作手册》是一份详尽的网络文档,主要针对Strato系统的使用方法进行了深入的介绍。这份手册旨在帮助用户有效地掌握Strato系统的各项功能,以便于在实际操作中流畅地进行多媒体...
《Python库Strato_Query详解与应用》 在Python的生态系统中,丰富的库是其强大功能的重要组成部分。今天我们要深入探讨的是名为"Strato_Query"的一个Python库,它以"strato_query-3.6.2-py3-none-any.whl"的形式...
StrATo是一款开源的应变分析工具,专为心脏应变值报告文件设计。它能够处理GE Vingmed公司的数据,这种数据通常来源于心肌应变超声成像技术,这是一种用于评估心脏功能的非侵入性诊断方法。在医疗领域,心肌应变分析...
"strato-hc.github.io" 是一个GitHub托管的个人或项目网页,可能是一个个人博客、一个开源项目的文档网站或者是其他形式的在线展示。这个网页很可能使用了GitHub Pages服务,这是一个由GitHub提供的静态站点托管服务...
**Strato:算法加密交易策略详解** 斯特拉托(Strato)是一种基于随机相对强弱指数(RSI)的交易策略,专为加密货币市场设计。该策略利用技术分析工具来自动化交易决策,旨在实现投资回报率并控制风险。本文将深入...
Strato数据门户 原始Strato( )的更新,这次清洁了100倍,好了10倍。 开发环境 $ vagrant up $ vagrant ssh $ npm install $ npm test $ npm start
先决条件要部署和运行此应用程序,需要一个运行中的STRATO多节点网络。 按照中的说明设置多节点网络。 可以在我们的上找到其他说明。建造STRATO平台需要一个具有以下结构的zip归档文件: .zip├─ contracts/│ └─...
【Strato:Matsak Pavel的回购】项目是一个与Java编程相关的任务,由Matsak Pavel设计,名为"任务13:警察局"。这个任务很可能是一个实战性的编程挑战,旨在帮助学习者提升在Java环境中的问题解决能力和软件开发技能...
Strato-DB 基于SQLite的NoSQL混合事件源总体概念是作为一个最小的包装器,使SQL保持邻近,但允许在需要的地方进行无模式存储。 DB :使用lazy-init promise接口包装Sqlite3数据库; 迁移容易JsonModel :将给定对象...
在TCP端口上创建一个服务器,该服务器收集APRS数据包并将其广播到其他程序。 利用串行端口通过无线电和gps接受数据。 可以通过aprs.fi和APRS-IS检索数据。 如果同时连接了gps和radio,则可以发送信标。
欢迎来到GitHub Pages 您可以使用的来维护和预览Markdown文件中网站的内容。 每当您提交到该存储库时,GitHub Pages都将运行从Markdown文件中的内容重建站点中的页面。 降价促销 Markdown是一种轻巧且易于使用的...
10. **数据集成**:可能涉及API接口的调用,将应用与其他服务(如云数据库、社交媒体或其他API)集成。 通过深入学习和实践这个项目,开发者可以提升在低代码开发平台上的技能,了解如何构建一个完整的移动应用,并...
Strato Mybatis是一款流行的mybatis mapper代码生成工具,供一个图形化的界面来生成代码,开发者只需配置好数据源,选择数据表和生成目录,即可生成Mapper代码,是Strato Framework附属产品,也可以快速生成含@...
Strato Mybatis 代码生成工具则是此类工具的一种,它具有高效、易用的特点,为开发者带来了很大的便利。 Mybatis 代码生成工具的核心功能包括: 1. **自动创建实体类**:根据数据库表结构自动生成对应的Java实体类...
文档详细介绍了这两款开发板的特性,并提到了其他相关硬件产品,例如用于光谱分析和硬件加速仿真领域的设备。接下来,我们将逐一探讨文档中涉及的相关知识点。 首先,文档中提到的STM32开发板是为了帮助开发者快速...
Strato.de 想要更多? ! 网络用户界面 基于带有CA证书和时区数据的Scratch Docker映像中基于Go静态二进制文件的14MB Docker映像 带有JSON文件persistance.json的持久性,用于存储旧IP地址以及每个记录的更改时间...
该演示应用程序使用STRATO区块链平台和智能合约来演示基本的两方供应链工作流程的解决方案。 前提条件 节点v7.2或更高版本。 该应用程序需要一个节点。 按照中的说明安装本地实例。 请确保端口80、3030和3031可...
弃用警告不推荐使用此演示应用程序,而推荐使用Blockapps BA供应链演示应用该演示应用程序使用STRATO区块链平台和智能合约来演示基本的两方供应链工作流程的解决方案。前提条件节点v7.2或更高版本。 该应用程序需要...
All versions of the discontinued Nintendo Switch Emulator Designed for ...Continuation of the project is being done under the name Strato. Strato Discord Server Link: https://discord.gg/YhpdhVBmXX