Strato 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>…</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

猜你喜欢

转载自july01.iteye.com/blog/2393909