Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

如何使用 TSPL 和 JavaScript 打印标签

Posted on 2022-05-27

标签打印机可以支持 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

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme