Datamax DLP Отправить и распечатать изображение над другим текстом с помощью python

#python

#python

Вопрос:

Есть ли у кого-нибудь опыт работы с языком DLP?

Я пытаюсь использовать python для отправки некоторого текста и штрих-кодов, и теперь мне нужно отправить изображение bmp.

Мне действительно сложно читать документацию, поэтому я надеялся, что другие уже использовали ее раньше и смогут мне помочь.

Вот документация https://www.honeywellaidc.com/en/-/media/en/files-public/technical-publications/printers/1common/dpl_88-2360-01_b.pdf

Ответ №1:

Это абсолютно возможно. Вот как я делаю это в данный момент на принтере Datamax O’Neil, установленном в Windows. Приведенную ниже команду DPL можно отправить на принтер с помощью оболочки win32print для python или отправить непосредственно на 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) намного проще. Что касается отправки изображений и их печати, к сожалению, я пока не добился успеха. Мне нужно сначала предварительно сохранить изображение в памяти принтера (в виде файла BMP) с помощью программного обеспечения NetiraCT и обратиться к нему с помощью кода DPL.