def prints(self, code, align='left', qty=1): p_conf = settings.PRINTER_CONF usb_conf = p_conf['usb_conf'] printer = Usb(usb_conf['vendor_id'], usb_conf['product_id'], usb_conf['timeout'], usb_conf['input_endpoint'], usb_conf['output_endpoint']) dummy = Dummy() if align.upper() == "LEFT": dummy._raw(TXT_ALIGN_LT) else: dummy._raw(TXT_ALIGN_RT) dummy._raw(PD_P50) dummy._raw(BARCODE_HEIGHT + six.int2byte(120)) dummy._raw(BARCODE_WIDTH + six.int2byte(2)) dummy._raw(BARCODE_FONT_A) dummy._raw(BARCODE_TXT_BLW) dummy._raw(_SET_BARCODE_TYPE(2)) dummy._raw(code.encode()) printer._raw(dummy.output) printer._raw(NUL)
def test_print(): global pos pos.close() dp = Dummy() bold_emphasis = b"\x1b\x21\x08" # Sets text to bold second_typeface_emphasis = b"\x1b\x21\x01" # Selects font B (different code to actual font size stuff) reset_emphasis = b"\x1b\x21\x00" # Reset emphasis font_size_2x = b"\x1d\x21\x10" # Change text size to 2x font_reset = b"\x1d\x21\x00" # Reset text size dp.text("Test print\n\n") dp._raw(reset_emphasis) dp._raw(font_size_2x) dp.text("Font size two" + "\n") dp._raw(font_reset) dp._raw(second_typeface_emphasis) dp.text("Typeface two\n") dp._raw(reset_emphasis) dp._raw(bold_emphasis) dp.text("Bold text\n") dp._raw(reset_emphasis) dp.text("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-=_+[]{}'#@~;:<>?,./\\|'") dp.cut() test_handle = None test_handle = PosPrinter(int("0x" + SettingsUi.printProductIDLine.text(), base=16), int("0x" + SettingsUi.printVendorIDLine.text(), base=16), test_mode=True) if test_handle.failed: return test_handle.print(dp.output) test_handle.close() pos.reset() popup_message("Test printed!")
reserveringPrinten.append({"opmerking": "^^ High Tea"}) aantalReserveringen += 1 if reserveringPrinten: logging.debug('%s reserveringen worden geprint', aantalReserveringen) kitchen = Network(os.getenv("IP_PRINTER")) #Printer IP Address output = Dummy() output.text("Reservering Update (" + tijdVandaagPrint + " " + datumVandaagPrint + ")\n\n") # Maak tekst zwart output._raw(b'\x1B\x35' + b'\x01') for reserveringPrint in reserveringPrinten: if reserveringPrint.get("bericht"): output.text(reserveringPrint.get("bericht") + "\n") if reserveringPrint.get("opmerking"): # Maak tekst rood output._raw(b'\x1B\x34' + b'\x01') output.text(reserveringPrint.get("opmerking") + "\n") # Maak tekst zwart output._raw(b'\x1B\x35' + b'\x01') # Cut output._raw(b'\x1B\x64' + b'\x03')
def print_message(message, header): """ Prints a message through the POS printer with set formatting. Does __not__ take note of the current enable setting for the printer. TODO: Handle NoneType in any message field :param message: instance of class HoppieMessage :param header: string, printout header :return: nil """ bold_emphasis = b"\x1b\x21\x08" # Sets text to bold second_typeface_emphasis = b"\x1b\x21\x01" # Selects font B (different code to actual font size stuff) reset_emphasis = b"\x1b\x21\x00" # Reset emphasis font_size_2x = b"\x1d\x21\x10" # Change text size to 2x font_reset = b"\x1d\x21\x00" # Reset text size dpos = Dummy() # print header dpos._raw(reset_emphasis) dpos._raw(font_size_2x) dpos.text(header + "\n") dpos._raw(font_reset) # print associated time dpos._raw(second_typeface_emphasis) dpos.text(f"Received {datetime.datetime.utcfromtimestamp(message.time).strftime('%d-%H%Mz')}") dpos.text("\n") dpos._raw(reset_emphasis) # print message type dpos._raw(bold_emphasis) dpos.text("Type: ") dpos._raw(reset_emphasis) dpos.text("{}\n".format(message.mode)) # print sender dpos._raw(bold_emphasis) dpos.text("From: ") dpos._raw(reset_emphasis) dpos.text("{}\n".format(message.sender)) # print message dpos._raw(bold_emphasis) dpos.text("Message: ") dpos._raw(reset_emphasis) dpos.text("{}\n\n\n".format(message.message)) pos.print(dpos.output) helper.add_event((lambda: True), (lambda: ui.statusbar.showMessage("Commands sent to printer")))
class EscPosPrint(BasePrint): ''' print data to a ESC/POS printer. ''' font = 'A' def __init__(self, encode=None, **kwargs): BasePrint.__init__(self, **kwargs) from escpos.printer import Dummy self.dummy = Dummy() if encode: self.dummy.codepage = encode self.dummy.hw('init') self.texts = [] def _get_char_width(self, c): w = BasePrint._get_char_width(self, c) if self.font == 'A': w = w * 12 elif self.font == 'B': if w == 1: w = 9 else: w = 16 return w def print_text(self, text): self.texts.append(text) self.dummy.text(text) def _set_with_node(self, node): font = get_node_attr(node, 'font', '') align = get_node_attr(node, 'align', '') size = get_node_attr_int(node, 'size', 0) text_type = 'B' if get_node_attr(node, 'bold', '') else '' + 'U' if get_node_attr(node, 'underline', '') else '' setd = {} if font: setd['font'] = font self.font = font if align: setd['align'] = align if size: setd['width'] = size setd['height'] = size if text_type: setd['text_type'] = text_type if setd: self.dummy.set(**setd) def _handle_node(self, node): tag = node.tagName.lower() if tag in ['table', 'text', 'td', 'tr']: self._set_with_node(node) BasePrint._handle_node(self, node) def handle_cut(self, node): self.dummy.cut() def handle_image(self, node): src = get_node_attr(node, 'src', '') path = self.get_url_to_path(src) if path: from PIL import Image img = Image.open(path) img = align_image(img, self.width, get_node_attr(node, 'align', 'left')) self.dummy.image(img) def handle_img(self, node): self.handle_image(node) def handle_qrcode(self, node): native = get_node_attr(node, 'native', 'False').upper() == 'TRUE' code = get_node_text(node) size = get_node_attr_int(node, 'size', 5) if not native: img = get_qrcode_image(code, size=size) img = align_image(img, self.width, get_node_attr(node, 'align', 'left')) self.dummy.image(img) else: self.dummy.qr(code, size=size, native=native) def handle_barcode(self, node): native = get_node_attr(node, 'native', 'False').upper() == 'TRUE' codetype = get_node_attr(node, 'type', 'EAN13').lower() code = get_node_text(node) if not native: import qrcode img = get_barcode_image(code, codetype=codetype) img = align_image(img, self.width, get_node_attr(node, 'align', 'left')) self.dummy.image(img) else: self.dummy.barcode(code, codetype.upper(), font=get_node_attr(node, 'font', 'A').upper(), pos=get_node_attr(node, 'pos', 'BELOW').upper(), function_type=get_node_attr(node, 'function', 'B').upper()) def handle_beep(self, node): self.dummy._raw(b'\x1B\x42\x01\x01') def raw_send(self, msg): self.dummy._raw(msg) def get_data(self): return self.dummy.output def get_text(self): return ''.join(self.texts)