SpiritWeb-二次开发手册
本文将介绍如何在你的网站中使用SpiritWeb实现打印. 阅读本文前, 建议先使用SpiritDesigner先设计一个标签, 获得标签编号.
快速学习API,推荐使用互动测试沙箱
Print Spirit提供了基于js的打印API,方便在浏览器中完成打印,特别是提供高质量的标签打印功能。
快速入门
1、引用JS
使用Print Spirit js API,须先引用spirit.js,该JS会自动注入一个全局类:SPIRIT, 可以通过SPIRIT调用js Api。
http方式, spirit会同时在两个端口监听,避免由于端口被其他程序占用的情况.
<script src="http://127.0.0.1:9011/js/spirit.js"></script>
<script src="https://127.0.0.1:19011/js/spirit.js"></script>
https方式, 如果开发的程序是https, 应使用https引用spirit.
<script src="https://127.0.0.1:9443/js/spirit.js"></script>
<script src="https://127.0.0.1:19443/js/spirit.js"></script>
2、执行打印
打印分为三个步骤:
- 利用SPIRIT.open命令获取打印实例p。可以通过SPIRIT判断打印控件是否安装,并提示用户下载。
- 通过p.PrintLabel()完成打印。该命令的第一参数为模板ID(如何获取模板ID), 第二个参数为变量列表,实际打印时将替换模板中的对应变量(是么是模板变量?), 第三个参数为模版数据存url缺省为本网站。
- 通过p.close(), 关闭打印实例p。
具体代码如下:
SPIRIT.open(opt, function(p) {
p.PrintLabel(labelID, {var1:xxx, var2:xxx, ...});
p.close();
})
为避免过多使用回调函数控件,支持等价的Promise, async/await写法,如:
const p=await SPIRIT.open(opt);
p.PrintLabel(labelID, {var1:xxx, var2:xxx, ...});
p.close();
SPRINT.open的opt参数用于指定打印机参数,包括: 打印机名称,打印机类型, 打印机分辨率参数,字体参数等,可覆盖对应的缺省值。 使用空对象则使用缺省配置。
参数 | 内容 | 示例 | 备注 |
---|---|---|---|
name | 打印机名称 | ||
type | 打印机类型 | ZPL/CPCL/WIN | |
dpi | 打印机分辨率(点/英寸) | 203 | dpi/dpmm二选一 |
dpmm | 打印机分辨率(点/毫米) | 8 | |
font | 打印机字体 | MHEIGB18.TTF | 对windows打印机无效 |
cache | 是否使用模板缓存 | false | 缺省不使用 |
imgcache | 是否使用图片缓存 | true | 缺省使用 |
col | 设置每行打印多少个标签 | 1 | 缺省=1, auto标识自动根据纸张大小/标签大小计算 |
row | 设置每页打印多少行标签 | 1 | 缺省=1, auto标识自动根据纸张大小/标签大小计算 |
master | 主从模式时, 设置主服务器IP | 参考企业内网场景解决方案 |
3、一个完整的例子
该例子演示了如何使用共享模版,并在网页上设置模版变量,完成打印的方法。使用的模版(查看)ID为:953745b5-90f3-4852-805d-d11f994d2374, 共定义了name、phone两个模版变量。
使用该例子,你需要有一台打印机(ZPL, CPLC或windows打印机均可),并安装打印控件,如果未安装第一次打印时,会自动提示你下载安装。
<!DOCTYPE html>
<html>
<head>
<title>打印测试</title>
<!-- 如果主网站是http, 使用下面两行-->
<script src="http://127.0.0.1:9011/js/spirit.js"></script>
<script src="http://127.0.0.1:19011/js/spirit.js"></script>
<!-- 如果主网站是https模式,请使用下面两行
<!--script src="https://127.0.0.1:9443/js/spirit.js"></script-->
<!--script src="https://127.0.0.1:19443/js/spirit.js"></script-->
</head>
<body>
<script type="text/javascript">
function do_print() {
if (!SPIRIT) {
if (!confirm('没有检查到到打印控件,立刻安装?')) return;
window.location.href='http://www.printspirit.cn/download/spirit-web-setup.exe';
}
vars= {
name:document.getElementById("name").value,
phone:document.getElementById("phone").value
};
SPIRIT.open({dpi:203, cache:true}, function(p) {
p.PrintLabel("953745b5-90f3-4852-805d-d11f994d2374", vars);
p.close();
})
}
</script>
<p>姓名<input id="name" ></p>
<p>电话<input id="phone" ></p>
<p><Button onclick="do_print()">点击打印</Button></p>
</body>
</html>
说明 打印精灵同时支持http, https协议。引入print.js的协议应该和你的主网站的协议一致。
为防止本地端口被占用,如果9011(或https端口9443) 端口被占用,打印精灵将尝试打开19011端口(对https为19443端口)。可以同时引入两个端口的print.js,实现端口的自适应。
其他打印模式
除了支持标签模板打印外,控件还支持另外两种打印模式,供高级用户使用。
命令模式
命令模式,可以直接向打印机发送打印命令。
如下面的例子通过Text命令打印"测试文本"4个汉字,更多打印命令详见:JS API手册
SPIRIT.open(opt, function(p){
p.initLabel(80, 210);
p.Text(0, 0, "测试文本");
p.print();
p.close();
})
原始模式
个打印送原始打印码,可以直接控制底层的打印。比如可以用一台针式打印机作为流水打印。
SPIRIT.open(opt, function(p){
prn=p;
})
...
p.printRaw(data)
...