mirror of
				https://github.com/python-escpos/python-escpos
				synced 2025-10-23 09:30:00 +00:00 
			
		
		
		
	Add Win32Raw printer to available printers
This commit is contained in:
		@@ -334,3 +334,51 @@ class Dummy(Escpos):
 | 
			
		||||
 | 
			
		||||
    def close(self):
 | 
			
		||||
        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)
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user