【问题标题】:Convert PNG to ZPL and print将 PNG 转换为 ZPL 并打印
【发布时间】:2020-01-27 03:26:39
【问题描述】:

我正在尝试将图像转换为 ZPl,然后在 Python 上的 TLP 2844 斑马打印机上将标签打印为 6.5*4cm 的标签。

我的主要问题是: 1.转换图像 2.从python打印到zebra队列(老实说,我已经尝试了所有明显的打印包,比如zebra0.5/win32 print/ZPL...)

任何帮助将不胜感激。

【问题讨论】:

  • 添加您尝试过的代码
  • 你有没有得到任何地方?我有同样的问题。拥有一个 .png-to-EPL/ZPL 转换器真是太棒了。

标签: python windows printing zpl


【解决方案1】:

几周前我遇到了同样的问题。我专门为这台打印机制作了一个 python 脚本,其中有一些可用的字段。我评论了 (#) 什么不涉及您的需求,但留下了它,因为您可能会觉得它有帮助。

我还建议您将打印机设置为 EPL2 驱动程序和 5cm/s 的打印速度。使用此脚本,您将获得带有 EAN13 格式条形码的 PNG 预览。 (如果您需要其他格式,您可能需要点击 ZPL 模块文档。)

请记住,如果您使用 ZLP 2844 打印,您将需要使用他们的付费软件,或者您需要手动配置整个打印机。

import os
import zpl
#import pandas

#df= pandas.read_excel("Datos.xlsx")
#a=pandas.Series(df.GTIN.values,index=df.FINAL).to_dict()

for elem in a:

    l = zpl.Label(15,25.5)
    height = 0
    l.origin(3,1)
    l.write_text("CUIT: 30-11111111-7", char_height=2, char_width=2,   line_width=40)
    l.endorigin()

    l.origin(2,5)
    l.write_text("Art:", char_height=2, char_width=2, line_width=40)
    l.endorigin()

    l.origin(5.5,4)
    l.write_text(elem, char_height=3, char_width=2.5, line_width=40)
    l.endorigin()

    l.origin(2, 7)
    l.write_barcode(height=40, barcode_type='2', check_digit='N')
    l.write_text(a[elem])
    l.endorigin()

    height += 8
    l.origin(8.5, 13)
    l.write_text('WILL S.A.', char_height=2, char_width=2, line_width=40)
    l.endorigin()

    print(l.dumpZPL())
    lista.append(l.dumpZPL())

    l.preview()

为了打印预览而不必观看和确认每个预览,我最终修改了 ZPL 预览方法,返回一个 IO 变量,以便我可以将其保存到文件中。

fake_file = io.BytesIO(l.preview())
img = Image.open(fake_file)
img = img.save('tags/'+'name'+'.png')

关于 ZPL 模块的 Label.py(预览方法):

#Image.open(io.BytesIO(res)).show().  <---- comment out the show, but add the return of the BytesIO
return res

【讨论】:

  • 感谢您的代码。我没有看到标签上有实际 .png 的位置。看起来全是文字?
【解决方案2】:

我遇到了类似的问题,并创建了一个.net core application,它获取图像并将其转换为 ZPL,转换为文件或控制台,以便在 bash 脚本中进行管道传输。您可以将其与您的 python 应用程序一起打包,将其称为子进程,如下所示:

output = subprocess.Popen(["zplify", "path/to/file.png"], stdout=subprocess.PIPE).communicate()[0]

或者随意使用我的代码作为参考点并在 python 中实现它。

一旦你有一个 zpl 文件或流,如果你在 linux 上,你可以使用 lpr 将它直接发送到打印机。如果在 Windows 上,您可以使用其 IP 地址连接到打印机,如 stack overflow question 中所示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2020-01-09
    • 2021-09-12
    • 2019-12-16
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多