Как печатать на Python без предпросмотра файла

сделал небольшую программку, которая формирует этикетку через Pillow, можно сохранить в формате изображения либо pdf, но не могу ничего внятного найти на счёт печати без предпросмотра. За раз могут печататься сотни этикеток, так что точно нужно его обойти. Подскажите ка это можно сделать для pdf или изображения. Заранее спасибо

*Принтер Godex530, размер этикетки 53мм х 240мм, нашёл кучу статей и в большинстве из них используется win32, но не могу понять что не так с моим кодом. Вроде он отправляет побайтово на принтер, в очереди печати файл отображается, но печать так и не начинается. Посмотрите пожалуйста, у меня ощущение что я накосячил с форматом отправляемого файла. Так же нашёл статью с таким же Godex530, там использовали ZPL, но я так и не понял как его к сети подключили. Если это более верный вариант чем печать изображением, то подскажите как это сделать, пожалуйста. [Тот источник]:Программа для печати штрихкодов на принтере Godex 530 на языке python

Текст программы: ''' from PIL import Image import win32print import win32ui import win32con import win32api

def print_image(image_path):

printer_name = win32print.GetDefaultPrinter()

image = Image.open(image_path)

width, height = image.size

hDC = win32ui.CreateDC()
hDC.CreatePrinterDC(printer_name)
printable_area = hDC.GetDeviceCaps(win32con.DESKTOPHORZRES), hDC.GetDeviceCaps(win32con.DESKTOPVERTRES)
printer_size = hDC.GetDeviceCaps(win32con.HORZRES), hDC.GetDeviceCaps(win32con.VERTRES)

ratio = min(printable_area[0] / width, printable_area[1] / height)
width = int(width * ratio)
height = int(height * ratio)
image = image.resize((width, height))

printdefaults = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
printer = win32print.OpenPrinter(printer_name, printdefaults)

printer_info = win32print.GetPrinter(printer, 2)
win32print.SetPrinter(printer, 2, printer_info, 0)

path  = image_path[:-len(image_path.split('/')[-1])] + 'NOW_PRINTING.png'
image.save(path)
im = open(path, 'rb')

job_info = [image_path.split('/')[-1], None, "raw"]
win32print.StartDocPrinter(printer, 1, job_info)
win32print.StartPagePrinter(printer)
#win32api.ShellExecute(2,'print', path,'.','/manualstoprint',0)
win32print.WritePrinter(printer, im.read())
win32print.EndPagePrinter(printer)
win32print.EndDocPrinter(printer)

im.close()

win32print.ClosePrinter(printer)

print_image("/Супер-залупа/Супер-залупа.jpg")'''


Ответы (0 шт):