首页 > 解决方案 > Datamax DLP 使用 python 在其他文本上方发送和打印图像

问题描述

有人对 DLP 语言有任何经验吗?

我正在尝试使用 python 发送一些文本和条形码,现在我需要发送一个 bmp 图像。

该文档对我来说真的很难阅读,所以我希望其他人以前使用过并且可以帮助我。

这是文档 https://www.honeywellaidc.com/en/-/media/en/files-public/technical-publications/printers/1common/dpl_88-2360-01_b.pdf

标签: python

解决方案


这是绝对可能的。这是我目前在 Windows 上安装的 Datamax O'Neil 打印机上的操作方式。下面的 DPL 命令可以使用python 的 win32print 包装器发送到打印机,或者使用套接字库直接发送到打印机的 IP :

DPL 代码:

dpl_code = b'''<STX>LH15D11FA+
191100200140035THIS IS SOME TEXT
1W1j00050010000THIS IS A CODE128 BARCODE
121100000850010
1Y1100501600315THIS_IS_AN_IMAGE_FILE_ALREADY_STORED_ON_THE_PRINTER
191100202650010THIS IS SOME MORE TEXT
E'''

< STX > 必须替换为特殊字符(默认值:0x02,不呈现为文本)。每行代表一串文本,或图形组件,例如预存储在打印机内存中的条形码或图像。有关语言语法的更多详细信息,请参阅DPL 命令参考

对于在 Windows 上作为默认打印机安装的打印机:

import win32print

printer_name = win32print.GetDefaultPrinter()
printer = win32print.OpenPrinter(printer_name)
win32print.StartDocPrinter(printer, 1, ("raw_data", None, "RAW"))
win32print.WritePrinter(printer, dpl_code)
win32print.EndDocPrinter(printer)
win32print.ClosePrinter(printer)

对于可通过网络访问的打印机:

import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as connection:
  connection.settimeout(timeout)
  connection.connect((ip_address, port))
  connection.send(dpl_code)
  response = connection.recv(1024)

这种方法对我来说有点成功,但我发现使用 Zebra 打印机 (ZPL) 更容易。至于发送图像并打印它们,不幸的是我还没有成功。我需要先使用NetiraCT 软件将图像预存储在打印机内存中(作为 BMP 文件),并使用 DPL 代码对其进行引用。


推荐阅读