SpiritWeb JS API 手册
对象实例操作本手册记为
SPIRIT#fun()
, 注意和SPIRIT.fun()
的区别。
SpiritWeb JS API 同时支持异步和回调模式:包含callback的调用,如果不指定callback,将会返回一个Promise, 因此可以使用异步模式。
打印机管理API
SPIRIT.getPrinterList([cb, errcb])
获取当前系统安装的打印机。包括Windwows打印机和通过打印精灵控制台配置的全部打印机。 支持callbak和异步调用模式。
try {
let rc = await windows.SPIRIT.getPrinterList()
if (rc.rc==='DATA') {
rc.data为打印机列表
}
}
返回:
{
"rc" : "ERR"/"DATA",
"data" : [
{
"type" : "WIN/ZPL",
"name" : "Name of Printer",
},
...
]
}
SPIRIT.getPrinterInfo(name[, cb, err])
获取打印机信息, 包括支持的纸张大小等信息。
try {
let rc = await windows.SPIRIT.getPrinterInfo(pname)
if (rc.rc==='DATA') {
rc.data为打印机列表
}
}
返回:
{
"rc" : "ERR"/"DATA",
"data" : [
{
"type" : "WIN/ZPL",
"name" : "Name of Printer",
},
...
]
}
SPIRIT.clearCache(labelid)
清除标签缓存
PRN.EnumFonts([cb, err])
获取已经安装的字体。目前仅支持windows
PRN.Jobs(cb, err)
获取当前正在运行打印任务。
打印API
SPIRIT.open( opt, [callback, [errcb]])
打开打印机。该函数将通过回调函数callback返回打印机对象实例p, 可进行进一步操作,如打印p.PrintLabel(...)。
SPIRIT.open(opt, function(p){
p.PrintLabel("953745b5-90f3-4852-805d-d11f994d2374", {
"name":"张三"
"addr":"四川成都"
});
p.close();
})
或采用异步模式
try {
let p = await SPIRIT.open(opt)
p.PrintLabel("953745b5-90f3-4852-805d-d11f994d2374", {
"name":"张三"
"addr":"四川成都"
})
p.close();
}catch(e) {
alert("无法连接打印服务器");
}
参数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 条码宽线宽度
p.Barcode1D(0, 100, "Code128", 0, `1234569890123`, 80, "AlignCenter", 4, 10);
SPIRIT#print()
执行打印。打印标签必须使用 SPIRIT#initLabel()
开始, SPIRIT#print
结束。
SPIRIT#printRaw(str)
向打印机直接发送命令。
SPIRIT#hasError()
检查是否存在错误。
SPIRIT#getErrors()
获取错误列表
SPIRIT.open(opt, function(p){
p.initLabel(80, 210);
...
if (p.hasError()) {
alert(p.getErrors.join("\n"));
}
p.close();
})
SPIRIT#close()
关闭打印机连接,并释放资源。