SpiritWeb JS API 手册
对象实例操作本手册记为
SPIRIT#fun(), 注意和SPIRIT.fun()的区别。
SpiritWeb JS API 同时支持异步和回调模式:包含callback的调用,如果不指定callback,将会返回一个Promise, 可以通过aysnc/await获取返回值。以getPrinterList() 为例:
异步模式
1try { 2 let lst = await window.SPIRIT.getPrinterList() 3}catch(e){...}回调模式:
1window.SPIRIT.getPrinterList(function(lst){...}, function(err){...})
打印API
SPIRIT.open( opt, [callback, [errcb]])
打开打印机。该函数将通过回调函数callback返回打印机对象实例p, 可进行进一步操作,如打印p.PrintLabel(...)。
1SPIRIT.open(opt, function(p){
2 p.PrintLabel("953745b5-90f3-4852-805d-d11f994d2374", {
3 "name":"张三"
4 "addr":"四川成都"
5 });
6 p.close();
7})
或采用异步模式
1try {
2 let p = await SPIRIT.open(opt)
3 p.PrintLabel("953745b5-90f3-4852-805d-d11f994d2374", {
4 "name":"张三"
5 "addr":"四川成都"
6 })
7 p.close();
8}catch(e) {
9 alert("无法连接打印服务器");
10}
参数opt用于指定打印机参数,包括: 打印机名称,打印机类型, 打印机分辨率参数,可覆盖对应的缺省值。 使用空对象则使用缺省配置。
| 参数 | 内容 | 示例 | 备注 |
|---|---|---|---|
| name | 打印机名称 | ||
| type | 打印机类型 | ZPL/CPCL/WIN | |
| dpi | 打印机分辨率(点/英寸) | 203 | dpi/dpmm二选一 |
| dpmm | 打印机分辨率(点/毫米) | 8 | |
| font | 打印机字体 | MHEIGB18.TTF | 对windows打印机无效 |
| cache | 是否使用模板缓存 | false | 缺省不使用 |
| imgcache | 是否使用图片缓存 | true | 缺省使用 |
| size | 纸张大小 | 9, [width, height] | 0自动获取打印机的缺省纸张, 非0打印机编号, array [width, height], |
| fill | 纸张填充方式 | 0保持原样, 1自动缩放, 2拼板 | |
| col | 设置每行打印多少个标签 | 1 | 缺省=1, "auto" 标识自动根据纸张大小/标签大小计算 |
| row | 设置每页打印多少行标签 | 1 | 缺省=1, "auto" 标识自动根据纸张大小/标签大小计算 |
| gapX | 列间隙 | 缺省=21 | |
| gapY | 行间隙 | 缺省=gapX | |
| master | 主从模式时, 设置主服务器IP | 参考企业内网场景解决方案 |
size, fill, col, row的组合
| fill | col | row | 功能 |
|---|---|---|---|
| 0 | c | r | 保持原样, 检查纸张能否打下标签, 若col/row 等于0, 强制为1 纸张大小需要大于 c*w + (c-1)gapX 且 rh + (r-1)*gapY |
| 1 | c | r | 自动放大标签, 若col/row 等于0, 强制为1 , 并计算宽高比例 |
| 2 | 0 | 0 | 拼板自动计算, 自动根据纸张, 标签大小, 计算col, row |
| 2 | c | r | c/r等于0时, 无意义,等价与fill=0的情况 |
- size = 0 自动获取打印机配置纸张大小, 1)先获取Spirit配置的缺省纸张大小, 2)对于windows打印机可再获取设备的缺省打印机纸大小, 3)获取整体的缺省打印纸大小, 成功为止.
- size = n 按编号获取纸张大小, 主要针对配置的windows打印机
- size = [width, height] 直接使用大小
SPIRIT#PrintLabel(label/labelID, [{var1:xxx, var2:xxx, ...}, [ url ]])
第一个参数可以是模板数据或模板ID, 如果是模板ID将从服务器加载模板数据。
第二个参数为变量列表,打印时将替换同名的模板变量,可选。
第三个参数为下载模板ID的url的,可选,缺省为本网站。如果需要在内网使用,可以设置为内网的代理网址。详见常见问题
底层命令
打印精灵支持,使用p.Text()这类的底层命令,更灵活, 但多数情况下建议优先使用PrintLabel
SPIRIT#initLabel(w, h)
初始化标签。w为标签宽度,h为高。w,h的单位均为0.1毫米,如initLabel(1000,500)表示宽10厘米, 高5厘米的标签,下同。
SPIRIT#Font(font, hsize, wsize, rotate)
设置打印字体。设置将一直保存到调用下一条SPIRIT#Font前。
- font为字体名称,注意必须是打印机的内置字体,请查看打印手册。
- hsize 为文字高度,单位为0.1毫米。
- wsize 为文字宽度,缺省为hsize
- rotate为文字方向,支持:0-不旋转。1-旋转90度。2-旋转180度。3-旋转270度。
SPIRIT#Text(x, y, text)
在标签的(x,y)坐标开始打印文本text。
SPIRIT#TextEx(x, y, text, hszie, [wsize, [rotate, [font]])
先设置字体,然后在标签的(x,y)坐标开始打印文本text。
参数意义与SPIRIT#Font()相同,但是注意顺序不同。这样的目的在于如果只需改变大小和旋转方向,可以省略一些参数。
注意:SPIRIT#TexEx() 改变字体为临时的,下条SPIRIT#Text失效。
SPIRIT#Line( sx, sy, ex, ey, l)
画一条 (sx,sy) 到 (ex,ey)宽度为l的线段。
SPIRIT#Rect( x, y, w, h, l)
画一个左上角为(x, y), 宽度为w, 高度为h,线宽为l的线框。
SPIRIT#Barcode1D(x, y, codeType, roate, content, height, p, nw, ww)
在标签的(x,y)坐标开始打印1维条码。其他参数意义为:
- codeType 条码类型,目前支持:Code128, Code39, Code93, CodeEAN8, CodeEAN13, CODABAR, ITF25, UPCA, UPCE
- rotate 旋转条码。0-不旋转。1-旋转90度。2-旋转180度。3-旋转270度。
- content 条码内容
- p 内容文字位置
- nw 条码笮线宽度
- ww 条码宽线宽度
1 p.Barcode1D(0, 100, "Code128", 0, `1234569890123`, 80, "AlignCenter", 4, 10);
SPIRIT#print()
执行打印。打印标签必须使用 SPIRIT#initLabel()开始, SPIRIT#print结束。
SPIRIT#printRaw(str)
向打印机直接发送命令。
SPIRIT#hasError()
检查是否存在错误。
SPIRIT#getErrors()
获取错误列表
1SPIRIT.open(opt, function(p){
2 p.initLabel(80, 210);
3 ...
4 if (p.hasError()) {
5 alert(p.getErrors.join("\n"));
6 }
7 p.close();
8})
SPIRIT#close()
关闭打印机连接,并释放资源。
打印机管理API
SPIRIT.getPrinterList([cb, errcb])
获取当前系统安装的打印机。包括Windwows打印机和通过打印精灵控制台配置的全部打印机。 支持callbak和异步调用模式。
1try {
2 let rc = await windows.SPIRIT.getPrinterList()
3 if (rc.rc==='DATA') {
4 rc.data为打印机列表
5 }
6}
返回:
1{
2 "rc" : "ERR"/"DATA",
3 "data" : [
4 {
5 "type" : "WIN/ZPL",
6 "name" : "Name of Printer",
7 },
8 ...
9 ]
10}
SPIRIT.getPrinterInfo(name[, cb, err])
获取打印机信息, 包括支持的纸张大小等信息。
1try {
2 let rc = await windows.SPIRIT.getPrinterInfo("Name of Printer")
3 if (rc.rc==='DATA') {
4 rc.data为打印机详细信息
5 }
6}
返回:
1{
2 "rc" : "ERR/DATA",
3 "data" : [
4 {
5 "type" : "WIN/ZPL",
6 "name" : "Name of Printer",
7 },
8 ...
9 ]
10}
SPIRIT.Config(type, data[, cb, err])
配置Spirit, 例如:配置使用192.168.1.1作为中心服务器.
1let rc = await SPIRIT.Config("server", { server_type: "spirit-center", ip:"192.168.1.1"} )
SPIRIT.clearCache(labelid)
清除标签缓存
SPIRIT.EnumFonts([cb, err])
获取已经安装的字体。目前仅支持windows
SPIRIT.Jobs([cb, err])
获取当前正在运行打印任务。