Add Win32Raw printer to available printers

This commit is contained in:
Ramon Poca 2018-12-13 08:01:05 -08:00
parent 52719c0b7d
commit 18c51358aa
1 changed files with 48 additions and 0 deletions

View File

@ -334,3 +334,51 @@ class Dummy(Escpos):
def close(self): def close(self):
pass pass
_WIN32PRINT=False
try:
import win32print
_WIN32PRINT=True
except ImportError:
pass
if _WIN32PRINT:
class Win32Raw(Escpos):
def __init__(self, printer_name = None, profile=None, magic_encode_args=None, **kwargs):
super().__init__(profile=profile, magic_encode_args=magic_encode_args, **kwargs)
if printer_name is not None:
self.printer_name = printer_name
else:
self.printer_name = win32print.GetDefaultPrinter()
self.hPrinter = None
def open(self, job_name="python-escpos"):
if self.printer_name is None:
raise Exception("Printer not found")
self.hPrinter = win32print.OpenPrinter (self.printer_name)
self.current_job = win32print.StartDocPrinter (self.hPrinter, 1, (job_name, None, "RAW"))
win32print.StartPagePrinter (self.hPrinter)
def close(self):
if not self.hPrinter:
return
win32print.EndPagePrinter (self.hPrinter)
win32print.EndDocPrinter (self.hPrinter)
win32print.ClosePrinter (self.hPrinter)
self.hPrinter = None
def _raw(self, msg):
""" Print any command sent in raw format
:param msg: arbitrary code to be printed
:type msg: bytes
"""
if self.printer_name is None:
raise Exception("Printer not found")
if self.hPrinter is None:
raise Exception("Printer job not opened")
win32print.WritePrinter (self.hPrinter, msg)