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、执行打印

打印分为三个步骤:

  1. 利用SPIRIT.open命令获取打印实例p。可以通过SPIRIT判断打印控件是否安装,并提示用户下载。
  2. 通过p.PrintLabel()完成打印。该命令的第一参数为模板ID(如何获取模板ID), 第二个参数为变量列表,实际打印时将替换模板中的对应变量(是么是模板变量?), 第三个参数为模版数据存url缺省为本网站。
  3. 通过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)

...

留言

登录