MyException - 我的异常网
当前位置:我的异常网» Web前端 » Strato WebPrinter是什么?StratoIO WebPrinter Jav

Strato WebPrinter是什么?StratoIO WebPrinter Javascript API引见

www.MyException.Cn  网友分享于:2013-10-16  浏览:0次
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

文章评论

那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
鲜为人知的编程真相
鲜为人知的编程真相
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员的鄙视链
程序员的鄙视链
如何成为一名黑客
如何成为一名黑客
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员必看的十大电影
程序员必看的十大电影
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
每天工作4小时的程序员
每天工作4小时的程序员
为什么程序员都是夜猫子
为什么程序员都是夜猫子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老程序员的下场
老程序员的下场
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个调试和排错的小建议
10个调试和排错的小建议
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
那些争议最大的编程观点
那些争议最大的编程观点
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
中美印日四国程序员比较
中美印日四国程序员比较
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
我是如何打败拖延症的
我是如何打败拖延症的
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
漫画:程序员的工作
漫画:程序员的工作
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员都该阅读的书
程序员都该阅读的书
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
一个程序员的时间管理
一个程序员的时间管理
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
编程语言是女人
编程语言是女人
程序员应该关注的一些事儿
程序员应该关注的一些事儿
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
 程序员的样子
程序员的样子
旅行,写作,编程
旅行,写作,编程
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员和编码员之间的区别
程序员和编码员之间的区别
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有