打印精灵(PrintSpirit)和一般的标签打印软件相比有哪些不同,有什么优势?
答:打印精灵由精灵三剑客SpiritDesigner, SpiritLabel, SpiritWeb共同组成独特的标签打印解决方案。 与一般的标签打印软件如BarTender, Dlabel 相比,最大的特点就是组件化,使得打印精灵在可靠性、 扩展性、开放性、平台适应性等方面具有独特的优势。
-
可靠性。 一般的标签打印软件就是一个独立的windows应用程序。而打印精灵的核心功能由不同的组件完成, 组件不会相互干扰,资源占用少。比如工厂车间日常使用时,只需要专注打印,不需要标签设计功能,不会因为标签设计功能 的BUG影响打印。
-
扩展性。SpiritWeb提供标签打印的底层支持,自动将标签格式转换为ZPL或windows打印命令。在维持SpiritWeb 打印API不变的情况下,可以非常容易地扩展应用层,实现各种非常特殊的打印功能,比如换标打印。
-
开放性。SpiritWeb提供开放式的标签打印API, 可以快速开发各种定制化的打印功能。满足行业的特殊需要。
-
跨平台适应性。SpiritDesigner,SpiritLabel均在浏览器中运行,天然具有跨平台特性。SpiritWeb本质上是一个 服务程序,可以支持windows, linux等操作系统。
打印精灵(PrintSpirit)支持liunx操作系统吗?
答:支持。
打印精灵(PrintSpirit)都支持哪些打印机?
答:SPIRIT采用设备无关模式设计,原则上支持任意种类的打印机。具体如下:
- 对于网页打印:支持任何Windows支持的打印机 + 兼容ZPL/CPLC/TSPL打印指令集的打印机。
- 对于嵌入式设备/移动设备,目前支持兼容ZPL/CPLC打印指令集的打印机。
打印精灵(PrintSpirit)可以私有化部署吗?支持内网中打印标签吗?
答: 可以。有两种方式实现打印精灵的私有化部署,并在企业内网中能使用,具体方案如下:
方案1
使用SpiritDesktop。SpiritDesktop 将标签数据保留在本地,无需联网,可以在本地实现标签的设计、打印。
方案1的缺点是,如果场地内有多台机器,无法在机器间共享标签,必须在每台机器上编辑标签,或将标签文件拷贝到我的文档\打印精灵\lables下, 如果机器较多,管理、更新模板工作量较大。
方案2
采用SpiritCenter + SpiritWeb组合模式,其中SpiritCenter作为标签编辑服务器,可以在本地或(同时,也可以在其他机器上通过web方式编辑)。 设置其他PC修改配置指明从该服务器获取标签数据, 形成主从结构。参考:生产型企业内网环境下条码打印解决方案
注意: 采用该方案,安装SpiritCenter的机器必须打开PC机防火墙, 确保9011端口可以在其他机上访问.
具体操作如下:
打开打印精灵控制台,在参数栏添加: master=主服务器IP地址并保存.
或使用API, 在open时设置main参数
SPIRIT.open({"master":"主服务器IP地址"}, function(p){
...
})
或使用setUrl(url), 注意差别: setUrl()需要写完整的路径, 而main参数只需要IP地址, 同时setUrl()的优先级高于main参数.
SPIRIT.setUrl("http://主服务器IP地址:9011/load-template?id=")
SPIRIT.open({}, function(p){
...
})
什么是模板ID?如何获取。
模板ID是在本平台编辑模板后生成的唯一标识,通过模板ID可以访问,编辑制定的模板。
在共享模板或用户中心我的模板中,可以查看模板的ID。

什么是模板变量?规则是什么?
模板变量名支持中文吗?
支持。
如何实现可变数据打印 {#TP-VAR-PRINT}?
打印精灵支持强大的可变数据打印功能. 设计模板时, 可以指定占位符(称为:模板变量), 打印时模板变量将自动替换为实际值, 同一个标签模板可以打印不同的内容, 实现可变数据打印.
无论是使用SpiritLabel, 还是API方式打印标签, 使用模板的设计方式均相同.
例子 如果一个TEXT字段, 内容为: [姓名
name, 地址:addr], 用了两个变量name, addr以JS API方式为例, 打印时,PrintLabel的第二个参数为变量列表,会自动替换对应的模板变量,
PrintLabel(labelID, {name:"张三", addr:"四川成都"});那么实际打印内容将是: [姓名:张山 地址:四川成都]
模板变量也可以是结构化的数据,如:receiver.name、receiver.addr等等,receiver包含了多个字段。
PrintLabel(labelID, {
receiver: { name:"张三", addr:"四川成都"}
});
支持可变数据的元素包括: 文字,多行文字,一维条码,二维条码, 每个元素可以包含任意数量的变量. 创建模板时, 操作步骤如下.
- 选中元素 (文字,多行文字,一维条码,二维条码)
- 双击元素或在工具栏点击
打开文字编辑对话框.
- 在文字编辑框里, 可以输入文字和模板变量(数量任意). 模板变量包括预定义变量, 自增序列, 自定义变量三类.
- 预定义变量, 打印精灵内置的常用变量,如日期, 时间等.
- 自增序列, 该值在每次打印一张标签后自动增加.可以指定前导符,位数,增量(步长)
- 自定义变量, 每个自定义变量名称可以是字母数字,也可以是中文; 自定义变量的示例值仅在模板编辑时显示, 打印会自动替换为变量的实际值.
有设计好的标签模板供选用吗?
平台提供了模板共享区,这是一个相互交流的场地,通过SpiritDesigner设计的标签模板都可以在这里共享。
可以不共享模板吗?因为这可能涉及企业机密。
可以.
基于互联网的共享精神,我们鼓励大家共享自己的设计。但是考虑到企业的实际情况, 有三种方式可以选择, 如有需求请联系打印精灵业务支持
- 采用企业帐号,可以不共享设计,供有保密需求的企业选用。
- 使用SpiritDesktop, 该软件集标签编辑、标签打印为一体,功能与在线版本打印精灵基本一致, 无需连接互联网, 主要供有内网需求的客户使用.
- 使用SpiritCenter, 在SpiritDesktop的基础上增加了打印机集中管理功能。
打印精灵的打印模式有哪些?都适用于哪些场景?
-
原生引擎: 原生引擎直接将标签数据转换为打印机指令,无需通过操作系统的打印driver处理,具有打印速度快,软件安装方便,支持linux等特点。目前支持斑马系列打印机兼容ZPL协议,TSPL协议,以及便携式的CPCL, ESC/POS协议,覆盖了市场上主流的条码打印机。 进一步, 原生引擎 有三种工作模式:高速、平衡、高质量模式。
模式 优点 缺点 适用场景 高速模式 使用打印机内置指令打印文字、条码、二维码等元素,极致打印速度。 打印内置字体,特别是汉字,往往需要额外购买。打印多字体标签,成本较高。由于内置字体和设计字体有差别,可能有一定差别。 对打印速度要求高的场景,如工业控制 高精模式 将标签转换为位图打印,无需打印机内置字体,可以实现完美的打印精度。 打印速度较慢。 对打印效果有较高要求的场景 平衡模式 尽量使用打印机内置指令打印,只将缺失字体的文字转换为图形,平衡速度和质量。 - -
Windows驱动模式: 将标签数据转换为windows打印命令。 兼容性强,理论上凡是官方提供了windows驱动的打印机都可以支持。速度较慢。
ZPL高速模式无法打印中文
答:ZPL高速模式是原生引擎的一种工作方式, 该模式速度高,底层控制好,但是需要打印机提供汉字库方能打印汉字。某些低端打印机没有汉字库,因此无法打印汉字。同时,有的打印机虽然 有汉字库,但是由于汉字处理在ZPL/CPLC中为非标部分,不同的厂家可能的处理方式不同, 任然有可能无法识别汉字库从而无法打印中文。
如果遇到汉字打印问题, 一般使用原生驱动的高质量模式或windows驱动就可以解决。
如果你依然希望采用原生驱动的高速模式,请采用如下步骤:
- 询问打印机厂家,获取打印机汉字库名称,
- 配置中添加字体映射表。
可以实现远程打印吗?
答: 可以。有三种方式:
方式1:
采用网页打印模式,实现操作浏览器和打印机不在一台机器上。
在连接打印机的机器上安装打印精灵网页控件SpiritWeb, WEB服务器配合做适当的修改.
假设: 连接打印机的PC域名为: printer.local
使用IP地址也可以, 但是如果修改了IP地址,就要改服务器程序比较麻烦, 特别是SaaS服务最好使用域名,
不同的场地只需要配置本地的域名服务或修改hosts即可.
将原有程序:
1<script src="http://127.0.0.1:9011/js/spirit.js"></script>
1SPIRIT.open(opt, function(p) {
2 p.PrintLabel(labelID, {var1:xxx, var2:xxx, ...});
3 p.close();
4})
修改为:
1<script src="http://printer.local:9011/js/spirit.js"></script>
1SPIRIT.prn_server_url= "ws://printer.local:9011/print"
2SPIRIT.open(opt, function(p) {
3 p.PrintLabel(labelID, {var1:xxx, var2:xxx, ...});
4 p.close();
5})
注意1: 连接打印机的PC的应打开防火墙的9011/19011(备用)/9443(SSL)/19443(SSL备用)端口. 最少应该打开9011端口.
注意2: 如果WEB服务器采用https服务, 引用脚本和Websocket也需要对应的https, wss。此时需要为: printer.local 制作证书.
方式2:云打印模式
可以将打印精灵注册为云打印机(同时支持SpiritCenter/SpiritDesktop/SpiritWeb),每个注册的打印精灵可以获得一个唯一ID, 以及对应的私有WebHook地址, 通过该地址可以实现远程打印。
该模式完美处理了https, 内网防火墙穿透等问题。可以为各种互联网服务提供打印支持,如可以为互联网上的各种低代码,零代码平台提供专业的标签打印服务。 参看零代码高效打印:基于多维表格的标签自动化解决方案
方式3:采用SpiritMaster
本质上SpiritMaster也是一种云打印模式,和方式2不同的是,该模式主要是为SaaS软件开发商提供私有的、自行管理的云打印服务,而不依赖打印精灵官网。可以在SaaS服务器上安装SpiritMaster, 在客户连接打印机的机器上安装SpiritSliver, 利用Master/Sliver的通讯实现远程打印.
该模式同时支持互联网、私有化部署, 可以完美处理https, 防火墙等问题, 部署简单.
打印精灵支持哪些种类的条码?
支持:Code128, GS1-128,39码,25码,Codebar, EAN-13, EAN-8, UPC-A, UPC-E, 等主流一维条码,以及QRcode, PDF417, DataMatrix, GS-DataMatrix等二位条码。
二维码支持中文吗?
支持。打印精灵的QRcode, DataMatrix二维码均支持中文。编码时,会自动根据是否有中文,选择最高效的编码模式。
支持GS1条码吗?
支持。打印精灵支持GS1-128, GS1-DataMatrix两种GS1系列编码。只需按显示方式录入条码内容如:(02)00614141000418(15)240901(10)4512XA(37)20, 可以自动插入GS1标识,自动处理应用标识AI, 正确编码GS1中的多个字段,包括固定长度及变长字段。
支持图像打印吗?
支持。打印精灵支持两种方式的图像。自定义图片和ICON。 自定义图片在编辑其中上传支持任意图像格式。ICON为SVG格式,支持无级缩放。
能用企业私有字体设计打印标签吗?
能。 请参看:如何在打印精灵中使用自定义字体,打印精美标签
API调用是, 报错: {"code":0,"msg":"invalid character '\n' in string literal","rc":"ERR"}
一般来说, 包括invalid character都是JSON解码错误, 具体到这里问题里, 是在做字符串拼接时, 没有对回车做转意处理.
1{
2 "vars": {"aaa":"this is CR
3test"}
4}
就会报错, 需要转意成:
1{
2 "vars": {"aaa":"this is CR \ntest"}
3}
这是进行字符串拼接时,非常容易犯的错误.
留言
- 打印精灵(PrintSpirit)和一般的标签打印软件相比有哪些不同,有什么优势?
- 打印精灵(PrintSpirit)支持liunx操作系统吗?
- 打印精灵(PrintSpirit)都支持哪些打印机?
- 打印精灵(PrintSpirit)可以私有化部署吗?支持内网中打印标签吗?
- 什么是模板ID?如何获取。
- 什么是模板变量?规则是什么?
- 模板变量名支持中文吗?
- 如何实现可变数据打印 {#TP-VAR-PRINT}?
- 有设计好的标签模板供选用吗?
- 可以不共享模板吗?因为这可能涉及企业机密。
- 打印精灵的打印模式有哪些?都适用于哪些场景?
- ZPL高速模式无法打印中文
- 可以实现远程打印吗?
- 打印精灵支持哪些种类的条码?
- 二维码支持中文吗?
- 支持GS1条码吗?
- 支持图像打印吗?
- 能用企业私有字体设计打印标签吗?
- API调用是, 报错: {"code":0,"msg":"invalid character '\n' in string literal","rc":"ERR"}