From dd228c9fdae4f4eee972b7d6d91a36b1b4d42258 Mon Sep 17 00:00:00 2001 From: Christoph Heuel Date: Thu, 4 Jun 2015 13:57:59 +0200 Subject: [PATCH] Add text wrapping * The base class supports to give columns, how much it should wrapped. * This is meant for longer text. * The special instances need to initialize the super class with the * columns --- escpos/escpos.py | 17 ++++++++++++----- escpos/printer.py | 12 ++++++++---- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/escpos/escpos.py b/escpos/escpos.py index 876755e..810167e 100644 --- a/escpos/escpos.py +++ b/escpos/escpos.py @@ -13,6 +13,7 @@ except ImportError: import qrcode import time +import textwrap from .constants import * from .exceptions import * @@ -21,6 +22,8 @@ class Escpos: """ ESC/POS Printer object """ device = None + def __init__(self, columns=32): + self.columns = columns def _check_image_size(self, size): """ Check and fix the size of the image to 32 bits """ @@ -39,7 +42,7 @@ class Escpos: i = 0 cont = 0 buffer = "" - + self._raw(S_RASTER_N) buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1], 0) self._raw(buffer.decode('hex')) @@ -97,7 +100,7 @@ class Escpos: break elif im_color > (255 * 3 / pattern_len * pattern_len) and im_color <= (255 * 3): pix_line += im_pattern[-1] - break + break pix_line += im_right img_size[0] += im_border[1] @@ -196,9 +199,9 @@ class Escpos: self._raw(BARCODE_TXT_BTH) elif pos.upper() == "ABOVE": self._raw(BARCODE_TXT_ABV) - else: # DEFAULT POSITION: BELOW + else: # DEFAULT POSITION: BELOW self._raw(BARCODE_TXT_BLW) - # Type + # Type if bc.upper() == "UPC-A": self._raw(BARCODE_UPC_A) elif bc.upper() == "UPC-E": @@ -221,7 +224,7 @@ class Escpos: else: raise exception.BarcodeCodeError() - + def text(self, txt): """ Print alpha-numeric text """ if txt: @@ -229,6 +232,10 @@ class Escpos: else: raise TextError() + def block_text(self, txt, columns=None): + '''Text is printed wrapped to specified columns''' + colCount = self.columns if columns == None else columns + self.text(textwrap.fill(txt, colCount)) def set(self, align='left', font='a', type='normal', width=1, height=1, density=9): """ Set text properties """ diff --git a/escpos/printer.py b/escpos/printer.py index de88814..1de54a3 100644 --- a/escpos/printer.py +++ b/escpos/printer.py @@ -18,7 +18,7 @@ from .exceptions import * class Usb(Escpos): """ Define USB printer """ - def __init__(self, idVendor, idProduct, interface=0, in_ep=0x82, out_ep=0x01): + def __init__(self, idVendor, idProduct, interface=0, in_ep=0x82, out_ep=0x01, *args, **kwargs): """ @param idVendor : Vendor ID @param idProduct : Product ID @@ -26,6 +26,7 @@ class Usb(Escpos): @param in_ep : Input end point @param out_ep : Output end point """ + Escpos.__init__(self, *args, **kwargs) self.idVendor = idVendor self.idProduct = idProduct self.interface = interface @@ -69,13 +70,14 @@ class Usb(Escpos): class Serial(Escpos): """ Define Serial printer """ - def __init__(self, devfile="/dev/ttyS0", baudrate=9600, bytesize=8, timeout=1): + def __init__(self, devfile="/dev/ttyS0", baudrate=9600, bytesize=8, timeout=1, *args, **kwargs): """ @param devfile : Device file under dev filesystem @param baudrate : Baud rate for serial transmission @param bytesize : Serial buffer size @param timeout : Read/Write timeout """ + Escpos.__init__(self, *args, **kwargs) self.devfile = devfile self.baudrate = baudrate self.bytesize = bytesize @@ -108,11 +110,12 @@ class Serial(Escpos): class Network(Escpos): """ Define Network printer """ - def __init__(self,host,port=9100): + def __init__(self,host,port=9100, *args, **kwargs): """ @param host : Printer's hostname or IP address @param port : Port to write to """ + Escpos.__init__(self, *args, **kwargs) self.host = host self.port = port self.open() @@ -141,10 +144,11 @@ class Network(Escpos): class File(Escpos): """ Define Generic file printer """ - def __init__(self, devfile="/dev/usb/lp0"): + def __init__(self, devfile="/dev/usb/lp0", *args, **kwargs): """ @param devfile : Device file under dev filesystem """ + Escpos.__init__(self, *args, **kwargs) self.devfile = devfile self.open()