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()

关闭打印机连接,并释放资源。


留言

登录