| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import tabulate
- from escpos.printer.win32raw import Win32Raw
- from escpos.printer.usb import Usb
- from escpos.printer.network import Network
- from escpos.printer import Dummy
- from escpos.escpos import Escpos
- from impresora.order import Order
- class BasePrinter:
- def __init__(self):
- self.bolded = False
- self.font = "a"
- self.doubled_size = False
- self.work = Dummy()
- self.printer:Escpos
- def change_font(self):
- self.font = "b" if self.font == "a" else "a"
- self.work.set(font=self.font)
- def text(self, text):
- # Print the text
- self.work.text(text+"\n")
- def bold(self):
- # Set bold for the next print
- self.bolded = not self.bolded
- self.work.set(bold=self.bolded)
- def double_size(self):
- # Set double size for the next print
- self.doubled_size = not self.doubled_size
- self.work.set(double_height=self.doubled_size, double_width=self.doubled_size)
-
- def default(self):
- # Set default size for the next print
- self.work.set_with_default()
-
- def print_order(self, order:Order, mesa:int = 0):
- # Print the order details
- self.default()
- self.double_size()
- self.bold()
- self.text(f"Orden Biergarten Klein\n")
- self.default()
- self.text(f"Fecha: {order.date.strftime('%d/%m/%Y: %H:%M:%S')}")
- self.bold()
- self.text(f"Mesa: {mesa}\n")
- self.default()
- self.text(order.tabulate())
- self.bold()
- self.text(f"Total: {order.total}")
-
- self.work.cut()
- # Print the order details
- self.printer._raw(self.work.output)
- self.work.clear()
- # Intentar cerrar la impresora si el método existe
- if hasattr(self.printer, 'close'):
- self.printer.close()
- class PrinterWindows(BasePrinter):
- def __init__(self, printer_name="Impresora Termica"):
- super().__init__()
- self.printer = Win32Raw(printer_name)
- class PrinterUSB(BasePrinter):
- def __init__(self, vendor_id, product_id):
- super().__init__()
- self.printer = Usb(vendor_id, product_id,in_ep=0x81,out_ep=0x03)
- class PrinterNetwork(BasePrinter):
- def __init__(self, host, port):
- super().__init__()
- self.printer = Network(host, port)
|