最常用ZPL命令
40多个Zebra打印机编程命令的完整参考,附实用示例
ZPL命令参考
ZPL(Zebra编程语言)使用以^(脱字符)或~(波浪号)开头的命令。^命令用于标签格式内,放在^XA和^XZ之间。~命令用于打印机配置,可以在格式外发送。每个命令都有用逗号分隔的可选参数。本指南涵盖物流、库存、零售和快递标签中最常用的命令。
命令类别
标签格式命令
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^XA | 开始标签格式。所有ZPL代码必须以此命令开头。 | ^XA ... ^XZ | 无参数 |
| ^XZ | 结束标签格式。关闭^XA开始的代码块并将标签发送到打印机。 | ^XA ^FO50,50 ^FD你好^FS ^XZ | 无参数 |
| ^FO | 字段原点。设置下一个元素(文本、条形码、图形)的X,Y位置。 | ^FO100,200 | x,y - 以点为单位的坐标。203 dpi = 8 点/毫米 |
| ^FT | 字段排版。类似^FO但从文本基线定位,适合对齐不同大小的文本。 | ^FT100,200 | x,y - 从文本基线开始的坐标 |
| ^FS | 字段分隔符。标记单个字段的结束。每个字段(文本、条形码、图形)必须以^FS结尾。 | ^FO50,50^FD文本^FS | 无参数 |
| ^CI | 更改国际编码。启用特殊字符如中文、日文等多字节字符的支持。 | ^CI28 | 编码 - 28 = UTF-8, 13 = Latin-1。使用^CI28支持中文 |
| ^CF | 默认字体。设置整个标签的默认字体、方向和大小。 | ^CF0,30,30 | 字体,高度,宽度 - 字体0是标准内置字体 |
| ^FW | 默认字段方向。设置文本和条形码的默认旋转角度。 | ^FWR | N=正常, R=90°, I=180°, B=270° |
文本命令
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^A | 字体选择和大小。定义下一个文本字段使用的字体及其大小。 | ^A0N,30,30 | f,o,h,w - f=字体(0-9,A-Z), o=方向(N,R,I,B), h=高度, w=宽度 |
| ^FD | 字段数据。要打印的文本或数据。始终放在^FO和^A之后、^FS之前。 | ^FO50,50^A0N,30,30^FD我的文本^FS | 文本 - 要打印的内容(最多3072个字符) |
| ^FB | 多行字段块。创建固定宽度的文本区域,自动将文本换行到多行。 | ^FB400,3,0,L,0^FD较长的文本会自动换行^FS | 宽度,最大行数,行距,对齐(L/C/R/J),缩进 |
| ^FH | 十六进制指示符。允许使用以_(下划线)为前缀的十六进制代码插入特殊字符。 | ^FH^FD价格: _c2_a250.00^FS | 指示符 - 默认使用_作为十六进制前缀 |
| ^FN | 模板字段编号。创建编号字段,可在之后填充数据,适用于可变数据标签。 | ^FO50,50^A0N,30,30^FN1^FS | 编号 - 字段编号(1-999)用于替换 |
| ^SN | 数字序列化。在每张打印的标签上自动递增数字,适合序列号或批次号。 | ^FO50,50^A0N,30,30^SN001,1,Y^FS | 起始值,增量,补零(Y/N) |
条形码命令
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^BY | 条形码默认设置。设置模块宽度、比率和默认高度。必须放在条形码命令之前。 | ^BY2,3,100 | 模块宽度(1-10),比率(2.0-3.0),高度 - 宽度控制分辨率 |
| ^BC | Code 128 — 物流和快递中最常用的条形码。可编码数字、字母和特殊字符。行业标准。 | ^FO50,50^BY2^BCN,100,Y,N,N^FD123456789^FS | o,高度,解释行(Y/N),上方(Y/N),校验(Y/N) |
| ^BQ | QR码。可编码URL、长文本或二进制数据。广泛用于追踪标签和营销。 | ^FO50,50^BQN,2,5^FDQA,https://example.com^FS | o,模型(1/2),放大(1-10)。数据前缀: QA=自动, QM=手动 |
| ^BE | EAN-13 — 全球零售产品标准。需要正好12位数字(第13位自动校验)。 | ^FO50,50^BY2^BEN,100,Y,N^FD690123456789^FS | o,高度,解释行(Y/N),上方(Y/N) |
| ^BU | UPC-A — 美国和加拿大零售标准。需要正好11位数字(第12位自动校验)。 | ^FO50,50^BY2^BUN,100,Y,N^FD12345678901^FS | o,高度,解释行(Y/N),上方(Y/N) |
| ^B3 | Code 39 — 广泛用于库存和制造业。仅编码大写字母、数字和部分符号。 | ^FO50,50^BY2^B3N,N,100,Y,N^FDABC123^FS | o,校验(Y/N),高度,解释行(Y/N),上方(Y/N) |
| ^BX | DataMatrix — 紧凑型二维码,用于制造业、电子和医药行业。在小空间存储大量数据。 | ^FO50,50^BXN,5,200^FDSN:ABC123456^FS | o,高度,质量(0-200)。200=最大纠错 |
| ^B7 | PDF417 — 高容量二维码。用于驾照、登机牌和身份证件。 | ^FO50,50^B7N,5,2,3,10,N^FD大量数据^FS | o,高度,安全级别(0-8),列数,行数,截断(Y/N) |
| ^BO | Aztec — 无需静区的紧凑型二维码。用于交通票据和空间受限的场景。 | ^FO50,50^BON,5,N^FDAztec数据^FS | o,放大,ECL(Y/N)。不需要周围的空白区域 |
图形和线条命令
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^GB | 绘制框或矩形。创建边框、分隔线和框架,用于标签的视觉组织。 | ^FO50,50^GB400,200,3^FS | 宽度,高度,线粗,颜色(B/W),圆角(0-8) |
| ^GC | 绘制圆形。创建指定直径和线粗的圆形。 | ^FO50,50^GC100,3,B^FS | 直径,线粗,颜色(B/W) |
| ^GD | 绘制对角线。从左上角到右下角(或反向)创建一条线。 | ^FO50,50^GD200,100,3,B,L^FS | 宽度,高度,线粗,颜色(B/W),方向(L/R) |
| ^GE | 绘制椭圆。创建指定宽度、高度和边框粗细的椭圆。 | ^FO50,50^GE200,100,3,B^FS | 宽度,高度,线粗,颜色(B/W) |
| ^GF | 图形字段。插入压缩格式的图像(hex或Z64)。用于Logo、签名和自定义图形。 | ^GFA,压缩数据... | 格式(A=ASCII hex),数据字节,每行字节,行数,数据 |
标签设置命令
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^LH | 标签原点。移动整个标签的参考点(0,0)。适用于调整边距。 | ^LH30,20 | x,y - 新原点(以点为单位) |
| ^LL | 标签长度。设置标签的总长度(以点为单位)。在打印机无法自动检测时需要设置。 | ^LL800 | 长度 - 以点为单位。203dpi: 800点 ≈ 100毫米 |
| ^PW | 打印宽度。设置最大打印宽度。适用于在窄标签上居中内容。 | ^PW812 | 宽度 - 以点为单位。4英寸在203dpi = 812点 |
| ^LT | 标签顶部调整。上下移动整个图像以校准垂直位置。 | ^LT10 | 偏移量 - 正值=下移, 负值=上移 (-120到120) |
| ^LS | 标签偏移。左右移动整个图像用于水平校准。 | ^LS-20 | 偏移量 - 正值=右移, 负值=左移 |
| ^MN | 介质跟踪。配置打印机如何检测标签:黑标、间隙或连续模式。 | ^MNY | N=连续, Y=间隙, M=黑标, W=Web感应 |
| ^MM | 打印模式。控制打印后打印机是撕纸、剥离还是回卷标签。 | ^MMT | T=撕纸, P=剥离, R=回卷, C=切刀, A=贴标机 |
打印命令
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^PQ | 打印数量。设置当前标签的打印份数。支持分组间暂停。 | ^PQ3,0,1,Y | 数量,组间暂停,每组份数,覆盖(Y/N) |
| ^PR | 打印速度。控制打印、回退和进纸速度。速度越低=质量越好。 | ^PR4,4,4 | 打印(1-14),回退,进纸 - 速度单位:英寸/秒 |
| ^PM | 镜像打印。水平翻转整个图像。适用于在透明材料上打印。 | ^PMY | Y=启用镜像, N=正常 |
| ^PO | 打印方向。将整个标签旋转180°,适用于从下方进纸的打印机。 | ^POI | N=正常, I=翻转(180°) |
打印机配置命令(~)
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ~SD | 设置深度。调整打印浓度。值越高=越深色,碳带消耗越多。 | ~SD15 | 值 (0-30) - 推荐热转印:10-20 |
| ~JA | 取消所有作业。停止当前打印并清空打印机缓冲区。 | ~JA | 无参数 |
| ~HS | 主机状态。请求打印机状态信息:纸张、碳带、活动错误。 | ~HS | 无参数 - 返回3行状态信息 |
| ~DG | 下载图形。将图像存储在打印机内存中以便重复使用,无需重新发送数据。 | ~DGR:LOGO.GRF,字节,宽度,数据 | 名称,总字节,每行字节,十六进制数据 |
ZPL命令常见问题
初学者必须掌握哪些ZPL命令?
6个必备命令:^XA(标签开始)、^XZ(标签结束)、^FO(X,Y位置)、^A(字体和大小)、^FD(要打印的文本)和^FS(字段结束)。用这6个命令就能创建基本文本标签。物流标签再加上^BY(条形码设置)和^BC(Code 128)。
ZPL中^FO和^FT有什么区别?
^FO(字段原点)从元素的左上角定位。^FT(字段排版)从文本基线定位。大多数情况下^FO更直观。当需要在同一基线上对齐不同大小的文本时使用^FT,因为^FT无论字体大小如何都能保持垂直对齐。
如何在ZPL中打印中文字符?
在标签开头使用^CI28命令启用UTF-8编码。示例:^XA ^CI28 ^FO50,50 ^A0N,30,30 ^FD中文测试^FS ^XZ。没有^CI28,中文和其他特殊字符将显示为乱码。注意:打印机需要支持UTF-8或安装了中文字体。
如何打印同一标签的多份副本?
在^XZ之前使用^PQ命令。例如:^PQ5打印5份。对于序列化(递增编号),在字段内使用^SN:^FO50,50 ^A0N,30,30 ^SN001,1,Y^FS 将在每份连续副本上打印001、002、003...
ZPL命令在非Zebra打印机上能用吗?
不能直接使用。ZPL是Zebra打印机的原生语言。TSC和SATO等品牌有部分兼容模式,但不是100%可靠。对于其他品牌的打印机,推荐使用ZPLPDF将ZPL转换为PDF,然后从任何打印机打印PDF。
快递标签应该用哪种条形码?
Code 128(^BC)是全球物流和快递的标准。京东、淘宝、拼多多等平台生成的快递标签已经包含了条形码。如果需要创建自己的快递条形码,使用^BY2 ^BCN,100,Y可以生成带有人工可读文字的标准Code 128。
如何调整ZPL的打印大小和质量?
调整条形码分辨率:修改^BY的第一个参数(模块宽度),^BY2为标准,^BY3为更粗。调整整体深度:使用~SD后跟0-30的值(推荐15)。调整速度(越慢=质量越好):使用^PR后跟英寸/秒的速度,^PR4是质量和速度的良好平衡。