You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现Zebra打印机打印.lbl标签并动态修改变量内容

实现方法

你现有的socket连接9100端口发送ZPL的方案完全可用,不需要额外安装打印机驱动或者第三方SDK,核心是不要尝试直接解析.lbl私有格式文件,通过导出模板的方式就能兼顾非技术人员编辑标签、程序动态修改变量的需求,具体步骤如下:

步骤1:从.lbl文件生成可复用的ZPL模板

.lbl是Zebra Designer的私有工程文件格式,没有公开统一的解析规范,不同版本的格式差异很大,硬解析很容易出现排版错位,最稳妥的方式是直接从设计好的.lbl导出打印机可识别的ZPL模板:

  • 用Zebra Designer打开已做好的.lbl标签文件,把所有需要动态修改的内容(日期、批次号、产品名等)替换成固定规则的占位符,比如日期位置填{{DATE}}、批次号位置填{{BATCH_NO}},占位符建议用纯英文大写加下划线的格式,长度和你实际要打印的最长内容保持一致,预留足够排版空间,避免打印时内容溢出。
  • 点击顶部菜单「文件」-「打印」,打印机选择对应型号的Zebra网络打印机,勾选「打印到文件」选项,导出后缀为.prn或.txt的文件,这个文件就是和你.lbl排版完全一致的原生ZPL代码。
  • 打开导出的ZPL文件,确认你之前设置的占位符完整出现在^FD字段后(格式类似^FD{{DATE}}^FS),就说明模板导出成功。

如果你用的是Zebra Designer 3及以上版本,新版.lbl本质是zip压缩包,解压后根目录下的label.zpl就是内置的ZPL文件,但还是建议用「打印到文件」的方式导出,解压得到的ZPL会带编辑状态的冗余字段,打印到文件导出的是打印机可直接执行的最终代码,稳定性更高。

步骤2:Python端实现变量替换与打印

逻辑非常简单,读取导出的ZPL模板,替换掉占位符为实际动态值,再通过你已经写好的socket逻辑发送给打印机即可,参考代码如下:

import socket
from datetime import datetime

# 读取从.lbl导出的ZPL模板
with open("label_template.zpl", "r", encoding="utf-8") as f:
    zpl_template = f.read()

# 填充可变字段
dynamic_fields = {
    "DATE": datetime.now().strftime("%Y-%m-%d"),
    "PRODUCT_NAME": "工业零件A",
    "BATCH_NO": "P20240521003"
}
for field_key, field_value in dynamic_fields.items():
    zpl_template = zpl_template.replace(f"{{{{{field_key}}}}}", str(field_value))

# 发送打印指令,新增超时配置避免连接卡死
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
printer_ip = "10.4.29.158"
printer_port = 9100
try:
    s.connect((printer_ip, printer_port))
    # 如果打印中文乱码,可以把编码改成gbk,或者在ZPL模板的^XA后加^CI28切换UTF-8编码
    s.send(zpl_template.encode("utf-8"))
    s.close()
    print("打印任务已发送")
except Exception as e:
    print(f"打印出错: {str(e)}")

注意事项

  • 非技术人员新增或修改标签时,只需要用Zebra Designer编辑.lbl文件,按相同规则设置占位符后重新导出ZPL模板,替换程序目录下的旧模板文件即可,完全不需要掌握代码或ZPL语法。
  • 正式打印前可以先把替换完成的ZPL内容存为本地文件,用ZPL预览工具核对排版无误后再实际发送,避免浪费标签纸。
  • 如果打印时出现内容截断,回到Zebra Designer里调整对应占位符的文本框宽度,留足内容余量即可。

内容的提问来源于stack exchange,提问作者Medestrac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:21:33