标签打印-网页打条码二维码ZPL与TSPL

本文探讨网页端标签打印的两种技术路径:HTML/CSS渲染与ZPL/TSPL指令直打。重点分析适用场景——渲染适合通用性、灵活性需求,ZPL适用于Zebra等专用打印机、高吞吐量及高精度条码场景。强调矢量输出(SVG/canvas)、纸张尺寸匹配、DPI一致性等关键技术要点,并指出常见实施陷阱,如位图模糊、指令透传支持缺失等。

打标签这件事,网页到底该画图还是发指令

仓库要打 50×30 的物料标签,产线要打 40×30 的工序卡。前端把一切都画好了,产品问:能不能别经过浏览器那一套,直接让打印机自己画?

能,但那叫发打印指令,不叫打网页。

两种做法,先分清

渲染成图/PDF直接发 ZPL / TSPL
谁画浏览器内核渲染,再交给系统打印机自己的固件解析
清晰度取决于渲染 DPI 和缩放原生分辨率,最锐利
兼容性什么牌子的机器都能打只认这个方言的机器
排版能力HTML/CSS 全部能力只能画线、字、条码、二维码
谁来写前端一般要会打印机指令

结论先给:能渲染就别发指令;打印量大、机器单一、要极限清晰度,才考虑 ZPL。

渲染这条路,网页怎么打标签

标签机在系统里就是一台普通打印机,纸张是自定义尺寸。前端只负责把 HTML 拼成标签的尺寸,剩下的交给本机客户端:

import webPrintPdf from 'web-print-pdf'

const html = `
  <div style="width:50mm;height:30mm;font-family:monospace;font-size:9px;padding:1mm;box-sizing:border-box">
    <div>${sku}</div>
    <div>${lot}</div>
    <img src="${barcodeSvg}" style="width:46mm;height:12mm" />
  </div>`

await webPrintPdf.printHtml(
  html,
  { width: '50mm', height: '30mm', margin: { top: '0', bottom: '0', left: '0', right: '0' } },
  { printerName: 'Zebra ZD421', paperFormat: '50 x 30 mm', scaleMode: 'noscale' },
  { action: 'print' }
)

三个参数别省:

  • width/height 用 mm,和标签纸一致
  • paperFormat 填驱动里的纸张名,不是随便写
  • noscale——标签被缩放,条码模块宽度就变了,扫枪直接罢工

条码用矢量,别用位图

这是标签糊掉的头号原因。一张 100×100 的 PNG 放大到 46mm 宽,模块边缘全是灰,203dpi 上一打就糊。

用 SVG 或者高倍 canvas 导出。QR 也一样,容错级别别乱调,丝印标签用 M 就够。

什么时候真该上 ZPL

满足这三条再考虑:

  1. 机器全是 Zebra 这类认 ZPL 的,不是杂牌混用
  2. 一天几千张,渲染那几百毫秒开始碍事
  3. 标签内容简单,就是字 + 条码,不需要复杂排版

ZPL 长这样:

^XA
^PW400
^LL240
^FO20,20^A0N,28,28^FDSKU-1029^FS
^FO20,60^BY2^BCN,80,Y,N,N^FD1029A^FS
^XZ

发给打印机的方式一般是:共享端口直写、或经由支持裸指令的打印中间件。注意:不是所有本机打印方案都支持透传裸指令,选型时要先问清楚,别写完才发现只能渲染。

常见坑

现象原因
标签内容整体偏下驱动里标签高度含了间距,页面高度按纯内容算
每张多走一截撕纸位/间隙传感器设置错
条码扫不出位图放大 + 缩放,或打印浓度太浅
换卷纸后全歪新卷标签尺寸和驱动里的纸张不一致
中文变方块打印机固件字库没有中文,渲染路线不会有这问题

最后

标签是「小尺寸 + 高精度」的场景,最容易在清晰度上翻车。

先走渲染,把尺寸和 noscale 调对;真到几千张一天、机器又统一,再谈 ZPL。 顺序反了,你会在打印机手册里泡一个星期。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值