ZPL 条码:Code 128 与 QR

更新于 2026年9月30日

热敏标签上由 ZPL 指令生成的 Code 128、QR、EAN-13 和 Data Matrix 条码

条码是大多数热敏标签存在的原因。ZPL 为每种常见码制都提供了专用指令,由打印机按原生分辨率自行绘制条,因此 ZPL 条码比条码图片打印得更清晰。

本指南介绍您真正会用到的指令:用于设置尺寸的 ^BY、用于 Code 128 和 GS1-128 的 ^BC、用于 QR 码的 ^BQ、用于 EAN-13 的 ^BE、用于 Data Matrix 的 ^BX,以及用于 PDF417 的 ^B7,并附有可运行的示例和决定条码能否扫描的尺寸规则。

该使用哪个 ZPL 条码指令

常见条码码制及其 ZPL 指令
码制指令典型用途
Code 128^BCSKU、订单号、运单号以及任何字母数字数据
GS1-128^BC … D带 GS1 应用标识符的物流数据、SSCC 托盘标签
QR code^BQ网页链接、资产标签和手机扫描
EAN-13^BE零售商品的收银台扫描
UPC-A^BU北美地区的零售商品
Data Matrix^BX小型零件、电子产品和医疗保健(GS1 DataMatrix)
PDF417^B7需要在小面积内存储大量数据的文件和证件
Code 39^B3较老的工业和汽车系统
Interleaved 2 of 5^B2运输纸箱(ITF-14)

用 ^BY 设置条码尺寸

^BY 为其后的条码设置默认值:模块宽度(最窄条的宽度,以点为单位)、使用宽窄比的码制的宽条与窄条比例,以及条码高度。模块宽度几乎决定了一维条码的一切,因为整个符号都随它缩放。

^BYw,r,h
^BY2,3,100

在 203 dpi 下,1 点为 0.125 mm,因此模块宽度 2 对应 0.25 mm 的条,模块宽度 3 对应 0.375 mm 的条。手持扫描器通常可以轻松读取 2 点的模块;从远处扫描或贴在曲面上的标签,则适合使用 3 或更大的模块。由于模块必须是整数点,条码不能被随意拉伸到任意宽度而不改变其扫描表现。

用 ^BC 打印 Code 128

Code 128 能紧凑地编码字母、数字和符号,是 SKU 和订单号的默认选择。^BC 接受方向、条码高度、是否打印可读文字行(以及在条码上方还是下方)和模式。校验字符由打印机自动计算。

^XA
^BY2,3,90
^FO40,40^BCN,90,Y,N,N^FDSKU-100245^FS
^XZ

使用 ^BC 模式 D 的 GS1-128

GS1-128 是带有 GS1 应用标识符(AI)的 Code 128,例如表示 GTIN 的 (01)、表示批次或批号的 (10),以及表示 SSCC 的 (00)。使用模式 D 时,在 ^FD 中用括号书写 AI:打印机会插入所需的 FNC1 字符,编码数据中不包含括号,而是把括号打印在可读文字行中。

^XA
^BY2
^FO40,40^BCN,110,Y,N,N,D^FD(01)09520123456788(10)LOT7^FS
^XZ

GS1 数据有严格规则:定长的 AI、校验位和允许使用的字符。ZPLCraft 设计器内置 GS1 助手,可逐个 AI 地构建数据,并在数据进入标签之前进行校验。

快递标签上的 GS1-128 SSCC 条码,GS1 助手显示应用标识符 00 及其值
GS1 助手会在应用之前校验应用标识符。

用 ^BQ 打印 QR 码

^BQN,2,6 选择正常方向、QR 模型 2 和放大倍数 6(每个模块为 6 × 6 点)。字段数据以纠错等级和输入模式开头,后跟逗号:LA, 表示 L 级纠错和自动输入模式。如果二维码可能被刮花或部分遮挡,请使用 H 或 Q 代替 L。

^XA
^FO40,40^BQN,2,6^FDLA,https://example.com/p/100245^FS
^XZ

用 ^BE 和 ^BU 打印 EAN-13 和 UPC-A

对于 EAN-13,发送前 12 位数字,打印机会补上校验位;用 ^BU 打印 UPC-A 也是同样的方式,发送 11 位数字。零售条码必须使用 GS1 分配给贵公司的 GTIN,缩放后不应小于零售商要求的尺寸。

^XA
^BY3
^FO40,40^BEN,90,Y,N^FD590123412345^FS
^XZ

Data Matrix 和 PDF417

^BX 打印 Data Matrix:第二个参数是每个模块的大小(以点为单位),质量等级 200 选择标准的 ECC 200 版本。它能在极小的方块中存储大量数据,因此常见于小型零件和医疗器械。^B7 打印 PDF417,这是一种用于文件和证件的堆叠式条码;其参数设置行高和纠错等级。

^XA
^FO40,40^BXN,8,200^FD100245-LOT7^FS
^FO300,40^BY2^B7N,6,3,,,N^FDORDER 100245 / 3 PARCELS^FS
^XZ

一个可运行的条码示例

这张标签在 203 dpi 的 4 英寸标签上,每种常见码制各打印一个。在查看器中打开它,即可修改数据和参数,并观察条码的更新。

^XA
^PW812
^LL1000
^CI28
^CF0,28
^FO40,30^FDCode 128^FS
^BY2,3,90
^FO40,70^BCN,90,Y,N,N^FDSKU-100245^FS
^FO470,30^FDQR code^FS
^FO470,60^BQN,2,6^FDLA,https://example.com/p/100245^FS
^FO40,260^FDEAN-13^FS
^BY3
^FO40,300^BEN,90,Y,N^FD590123412345^FS
^FO470,260^FDData Matrix^FS
^FO470,300^BXN,8,200^FD100245-LOT7^FS
^FO40,500^FDGS1-128^FS
^BY2
^FO40,540^BCN,110,Y,N,N,D^FD(01)09520123456788(10)LOT7^FS
^FO40,730^FDPDF417^FS
^BY2
^FO40,770^B7N,6,3,,,N^FDORDER 100245 / 3 PARCELS^FS
^XZ

在 ZPL 查看器中打开此条码示例

ZPL 查看器根据示例代码渲染出 Code 128、QR、EAN-13、Data Matrix、GS1-128 和 PDF417 条码
在 ZPL 查看器中渲染的示例标签。

无需编写 ZPL 也能创建条码

在 ZPLCraft 设计器中,从“条码”面板添加 Code 128、QR Code 或“EAN / GS1”。“属性”面板提供与 ZPL 指令相同的设置:码制、内容、以点为单位的模块宽度和条码高度,以及是否显示可读文字。“保持条码尺寸”会让数值变化时仍保持在当前尺寸范围内,当内容来自电子表格时尤其有用。

ZPLCraft 编辑器中选中的 Code 128 条码,含内容、码制、模块宽度和条码高度设置
条码属性与 ZPL 参数一一对应。

对于 GS1 条码,GS1 助手让您从列表中选择每个应用标识符,检查长度和校验位,并在应用前显示规范化后的输出。

如何创建 ZPL 标签:分步教程 →

ZPL 条码为什么扫不出来

  • 模块宽度太小。在 203 dpi 下,1 点的模块只有 0.125 mm,许多扫描器无法分辨。请在 ^BY 中增大模块宽度。
  • 缺少静区。一维条码两侧需要留白,Code 128 至少为模块宽度的 10 倍。请让文字和方框远离条码。
  • 条码以图片形式打印。按位图缩放的条码,条的宽度可能不均匀。使用原生 ZPL 条码指令可避免这个问题。
  • 打印机分辨率不对。为 203 dpi 编写的 ZPL 在 300 dpi 打印机上只会打印出预期尺寸的约三分之二,可能使模块小于扫描器的读取能力。
  • 打印浓度或速度。条粘连或断裂通常是打印机的浓度或速度设置造成的,而不是设计问题。

ZPL 条码常见问题

如何把 ZPL 条码变大?

对一维条码,增大 ^BY 中的模块宽度;对 QR 码,增大 ^BQ 中的放大倍数;对 Data Matrix,增大 ^BX 中的模块大小。若要更高的条,请增大高度参数。宽度始终以整数点为步进变化。

打印机会计算校验位吗?

对于需要校验位的码制,会的:Code 128 自动添加校验字符,^BE 和 ^BU 则根据前 12 位或 11 位数字计算 EAN-13 和 UPC-A 的校验位。

快递标签应该使用哪种条码?

请遵循承运商的规范。承运商的运单条码通常是 Code 128 或 GS1-128,许多承运商还会加上 MaxiCode 或 PDF417 等二维码。

没有打印机也能预览 ZPL 条码吗?

可以。ZPL 查看器在浏览器中渲染 Code 128、QR、EAN、UPC、Data Matrix、PDF417 等常见码制。预览无法证明扫描性能,因此请用您实际使用的扫描器测试打印出的标签。

资料来源