标签打印机可以支持 TSPL、ZPL、EPL 等编程语言。今天我们将概述 TSPL 语言。我们可以使用TEXT
、 BARCODE
和QRCODE
等 TSPL 命令构建标签。例如,如果我们想打印带有文本和条形码的标签,我们使用这些命令及其位置或大小等属性,并通过蓝牙或串行连接将这些命令发送到标签打印机。
\
在左侧,您可以看到 TSPL 命令和右侧的打印标签。您可以在此处找到所有可用的命令,但让我们看一下其中的一些命令以了解如何使用 TSPL。
以点为单位的坐标和大小
无论是TEXT
、 BARCODE
还是BITMAP
,通常坐标和大小都以点为单位。每英寸的点数取决于打印机的 DPI。
例如,如果打印机是
- 203 DPI → 表示一英寸有 203 个点,或 1 毫米有 8 个点。
- 300 DPI → 表示一英寸有 300 个点,或 1 毫米有 11.8 个点。
\ 据此,如果我们要添加一个高度为10mm的条码,并且打印机是203DPI,那么我们应该将高度设置为80 (10mm x 8 = 80点)。
标签的尺寸和间隙
我们需要像这样告诉打印机标签的大小:
SIZE 4,1
这里我们说标签的尺寸是 4×1 英寸。
\ 我们也可以将其设置为公制(mm):
SIZE 50 mm,25 mm
\ 我们可以设置标签之间的间距( GAP m,n
)。
GAP 0,0
这里的间隙为零英寸,这意味着它是一个连续的标签。
\
文本
我们可以使用TEXT
命令在标签上打印文本。我们可以给出位置、字体大小、旋转等等:
TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content”
|参数 |说明 | |—-|—-| | x, y | x 和 y 坐标 | |字体 |一般我们可以设置1-8(1-small, 2-bigger…8-biggest)| |旋转 | 0, 90, 180, 270 顺时针方向 | | x 和 y 乘法 |比例因子 1-10 | |对齐 | 1-左、2-中心、3-右(可选) | |内容 |文字内容 |
\
|示例命令 |结果 | |—-|—-| | TEXT 10,20,"1",0,1,1,"FONT 1"
\n TEXT 10,70,"2",0,1,1,"FONT 2"
\n TEXT 10,120,"3",0,1,1,0,"FONT 3"
| |
\
条码
我们可以使用BARCODE
命令将条形码添加到标签:
BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content”
\
|参数 |说明 | |—-|—-| | x, y | x 和 y 坐标 | |代码类型 | 128、EAN128、EAN13… | |身高 |点高度 | |人类可读 | 0 – 条形码值(文本)不可见 \n 1 – 文本左对齐 \n 2 – 居中对齐 \n 3 – 右对齐 | |旋转 | 0, 90, 180, 270 顺时针方向 | |窄 |以点为单位的窄元素的宽度 | |宽 |宽元素的宽度(以点为单位)| |对齐 | 1-左、2-中心、3-右(可选) | |内容 |条码内容 |
\示例命令:
TEXT 10,10, "2",0,1,1, "Human readable alignment"
\n BARCODE 10,50, "128",100,1,0,2,2,"left"
\n BARCODE 310,50, "128",100,2,0,2,2,"center"
\n BARCODE 610,50, "128",100,3,0,2,2,"right"
\结果:
PRINT 和 END 命令
建立标签后,我们需要告诉打印机标签已准备好打印。我们使用PRINT m[,n]
命令来做到这一点:
|命令 |说明 | |—-|—-| | SIZE 50 mm,25 mm
\n CLS
\n TEXT 10,10, "2",0,1,1, "Text 1"
\n PRINT 1
\n \n CLS
\n TEXT 10,10, "2",0,1,1, "Text 2"
\n PRINT 2
\n END
| – 设置标签大小 \n – 清除缓冲区 \n – 添加文本 \n – 打印两次缓冲区 \n \n – 清除缓冲区 \n – 添加文本 \n – 打印一次缓冲区 \n – 结束程序|
\ 它打印三个标签;一个带有“Text 1”的标签和两个带有“Text 2”的标签。
\ 我们在末尾添加END
命令,告诉打印机我们已经完成了打印。如果没有此命令,打印机可能无法打印缓冲区中的最后一张图像。
使用 JavaScript (Node.js) 打印
生成的命令可以通过串行或蓝牙发送到打印机。为了演示这一点,我使用 Node.js 创建了一个简单的代码。我使用“ usb ”包连接和发送命令(在 Windows 上,您可能需要安装驱动程序,要了解更多信息,请访问包的页面)。
\
const usb = require('usb'); const cmds = [ 'SIZE 48 mm,25 mm', 'CLS', 'TEXT 10,10,"4",0,1,1,"HackerNoon"', 'BARCODE 10,60,"128",90,1,0,2,2,"altospos.com"', 'PRINT 1', 'END', ]; // you can get all available devices with usb.getDeviceList() let device = usb.findByIds(/*vid*/8137, /*pid*/8214); device.open(); device.interfaces[0].claim(); const outEndpoint = device.interfaces[0].endpoints.find(e => e.direction === 'out'); outEndpoint.transferType = 2; outEndpoint.transfer(Buffer.from(cmds.join('\r\n')), (err) => { device.close(); });
\ 结果:
\
\ 当我在Alto 的 POS & Inventory项目中实现此功能时,我不得不逐条收集有关打印标签的信息。所以我写了这篇文章,希望它能成为处于类似情况的人的起点。
\ 没有战争! ✋?
原文: https://hackernoon.com/how-to-print-labels-with-tspl-and-javascript?source=rss