WebPrinter帮助文档

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="https://cdn.webprinter.cn/webprinter/3.6.12.10/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的连接状态:

(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内容",
	printer:"Microsoft Print to PDF",
	……
});
		

设定页边距

wp.newTask({
	name:"任务",
	content:"HTML内容",
	config:{
		marginLeft:2,//毫米
		marginRight:2,//毫米
		marginTop:3,//毫米
		marginBottom:4,//毫米
	}
});
		

打印多份

要打印多份文档,有多种选择,可以发送多次任务,也可以传入repeats配置。

for(var i=0;i<N;i++){
	wp.newTask({
		name:”任务”,
		content:”HTML内容”
		……
	});
}
		

wp.newTask({
	name:”任务”,
	content:”HTML内容”,
	config:{
		repeats: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.some-url.com”
});
		

具体参数参考表三。

b)接收任务提交结果

可在newTask第二个参数传入回调函数来判断任务是否正常提交。

wp.newTask(task,function(id,status){
	if(status==200){
		alert(“任务提交成功”);
	}else if(status==404){
		alert(“服务未启动”);
	}else{
		alert(“任务提交失败”);
	}
});
		
c)接收任务打印完成事件

可监听wp的ENDTASK事件感知任务完成进度,参数传入回调函数来接收任务信息(包含任务id和状态)。

wp.on("ENDTASK",function(task){
	console.log("ENDTASK",task);
	var status=task.status;
	//TODO handle status
});
		
d)批量发送任务 (自3.6.11开始支持)

可以通过newTasks(tasks,successCB,errorCB)来批量生成,如:

var tasks=[];
for(var i=0;i<1000;i++){
	var task={
		name:"测试Html任务"+htmlTaskId++,
		content:content,
		type:"html",
		printer:document.getElementById("printer").value,
		config:{
						width:100,
						height:100,
						marginLeft:0.1,
						marginTop:0.1,
						marginRight:0.1,
						marginBottom:0.1
		}
	};
	tasks.push(task);
}
wp.newTasks(tasks,function(){//控件将自动为每个task创建ID
	console.log("Submitted");
});
		
e)查询任务列表

可以通过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) JS API配置
得到默认打印机名称
			wp. getDefaultPrinter(function(printerName){
				alert(“当前默认打印机为”+printerName);
			});
		

七、 打印PDF

从1.7版本开始,Strato WebPrinter正式支持PDF打印,以下为一个简单打印pdf url的。例如:

					wp.newTask({
							name:"测试PDFURL ",
								content:”http://www.domain.com/some/url.pdf”,
								type:"pdfurl",//若type为”url” , 则当content后缀为.pdf时也将识别为pdf 格式	
							...
					});
				
			

另一种提交内容的方法就是提交base64编码的pdf文件内容,此时type为”pdf”,如

				wp.newTask({
						name:"测试PDF Base64 ",
						content:”cGRmIGNvbnRlbnQ=”,
						type:"pdf",
					...
				});
			

八、 打印ZPL/EPL

Strato WebPrinter自1.7版本开始支持Zebra打印机的专用打印指令。

ZPL和EPL都是斑马(Zebra)条码打印机的编程语言。ZPL是斑马条码打印机工业型号用的语言,EPL是斑马条码打印机桌面小机器用的语言。使用ZPL/EPL可以快速打印条码和简单字符。

				wp.newTask({
						name:"测试Zebra打印 ",
						content:” ^XA^FO100,75^BY3^B3N,N,100,Y,N^FD123ABC^XZ”,
						type:"zpl",//或epl
					...
				});
			

九、 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参数一览

Top