weixin_53582602 2022-03-09 15:53 采纳率: 52.4%
浏览 423
已结题

python 如何将 zebra 生成的.prn文件 或直接将prn文件中的zpl指令发送给斑马打印机

标签格式和内容通过zebra designer 设置完成,已经通过打印到文件得到标签的.prn文件

prn文件内容为zpl指令。通过zebra designer 里自带的打印功能打印成功

img

请问如果用python 代码调用怎么发送这段zpl给打印机,如果标签上有变量值的话怎么传入,谢谢。

注:pc和打印机使用usb连接

  • 写回答

3条回答 默认 最新

  • ilmss 2022-03-14 10:50
    关注
    获得5.00元问题酬金

    ZPL是Zebra斑马条码打印机的编程语言,利用这编程语言,编辑好一个打印的指令集,发送给条码打印机,条码打印机就会按照你事先编辑的命令去进行打印的工作,可以用于大规模的标准化打印操作。
    本文的重点不在于如何编写ZPL指令,而是说明如何使用Python进行简单的变量修改然后打印。
    比如,需要使用ZPL打印“HELLO WORLD”:
    ^XA
    ^LH00,00^FS
    ^CWJ,E:Arial.FNT
    ^FO10,10^AJN,50,50^FD HELLO WORLD ^FS
    ^PQ1,0,0,N
    ^XZ
    思路如下:
    1、Zebra需要通过LPT或者COM连接电脑
    2、ZPL指令作为一整个string,变量部分使用format进行格式化调整
    4、将最终的ZPL指令保存到txt文件用于传输
    3、os模块调用CMD的copy命令进行列印:copy 123.txt com1
    那么代码实例如下(代码需要根据实际使用进行修正):

    import os
    while True:
    zpl = f"""
    ^XA
    ^LH00,00^FS
    ^CWJ,E:Arial.FNT
    ^FO10,10^AJN,50,50^FD {HELLO WORLD} ^FS
    ^PQ1,0,0,N
    ^XZ
    """
    with open('123.txt','wt') as fp:
    fp.write(zpl)
    os.system('copy 123.txt com1 >>1')
    """
    >>1 由于terminal涉及中文可能出现返回信息乱码,这样可以屏蔽输出
    我想到另一种解法如下,输出为英文
    os.system('chcp 65001 && copy 123.txt com1')
    """
    print('print OK')
    if not os.path.exists("123.txt"):
    print('Nothing need to be printed')
    break
    

    需要列印的变量原始数据来源可以有多种:
    数据已存储到本地文件,如txt、json、csv、xls等等,Python要做的就是根据不同的文件格式进行读取
    从数据库读取数据,需要点SQL基础:PyMysql => Mysql,cx_Oracle => Oracle
    最简单的就是直接组成list或者dict存在Python源码内或者input()输入

    评论

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 创建了问题 3月9日