ZPL 条码:Code 128 与 QR
ZPLCraft更新于 2026年9月30日

条码是大多数热敏标签存在的原因。ZPL 为每种常见码制都提供了专用指令,由打印机按原生分辨率自行绘制条,因此 ZPL 条码比条码图片打印得更清晰。
本指南介绍您真正会用到的指令:用于设置尺寸的 ^BY、用于 Code 128 和 GS1-128 的 ^BC、用于 QR 码的 ^BQ、用于 EAN-13 的 ^BE、用于 Data Matrix 的 ^BX,以及用于 PDF417 的 ^B7,并附有可运行的示例和决定条码能否扫描的尺寸规则。
该使用哪个 ZPL 条码指令
| 码制 | 指令 | 典型用途 |
|---|---|---|
| Code 128 | ^BC | SKU、订单号、运单号以及任何字母数字数据 |
| 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
^XZGS1 数据有严格规则:定长的 AI、校验位和允许使用的字符。ZPLCraft 设计器内置 GS1 助手,可逐个 AI 地构建数据,并在数据进入标签之前进行校验。

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

对于 GS1 条码,GS1 助手让您从列表中选择每个应用标识符,检查长度和校验位,并在应用前显示规范化后的输出。
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 等常见码制。预览无法证明扫描性能,因此请用您实际使用的扫描器测试打印出的标签。