From 5bd6dcf471c7e7f00355ee3c33d15cdc672e9b6a Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Mon, 24 Jul 2017 15:04:54 +0200 Subject: [PATCH] Ensure QR codes have a border large enough (#235) * Ensure QR codes have a border large enough (The QR code spec requires a border at least 4*box_size thick but we can't just set border=16 because that results in a QR code more than 255px tall and I'm not yet ready to use fullimage() as a backend for it) This fix was originally commited by Stephan Sokolow on 2014-05-22 * Let the user print stuff using qr example * fix tests --- examples/qr_code.py | 19 +++++++++++++++++++ src/escpos/escpos.py | 3 +++ test/test_function_qr_native.py | 6 ++++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 examples/qr_code.py diff --git a/examples/qr_code.py b/examples/qr_code.py new file mode 100644 index 0000000..6db8b68 --- /dev/null +++ b/examples/qr_code.py @@ -0,0 +1,19 @@ +import sys + +from escpos.printer import Usb + + +def usage(): + print("usage: qr_code.py ") + + +if __name__ == '__main__': + if len(sys.argv) != 2: + usage() + sys.exit(1) + + content = sys.argv[1] + + # Adapt to your needs + p = Usb(0x0416, 0x5011, profile="POS-5890") + p.qr(content) diff --git a/src/escpos/escpos.py b/src/escpos/escpos.py index a986304..ec4df3b 100644 --- a/src/escpos/escpos.py +++ b/src/escpos/escpos.py @@ -211,7 +211,10 @@ class Escpos(object): qr_img = qr_code.make_image() im = qr_img._img.convert("RGB") # Convert the RGB image in printable image + self.text('\n') self.image(im) + self.text('\n') + self.text('\n') return # Native 2D code printing cn = b'1' # Code type for QR code diff --git a/test/test_function_qr_native.py b/test/test_function_qr_native.py index 2fbaa64..4aa9c1d 100644 --- a/test/test_function_qr_native.py +++ b/test/test_function_qr_native.py @@ -86,9 +86,11 @@ def test_image(): instance = printer.Dummy() instance.qr("1", native=False, size=1) print(instance.output) - expected = b'\x1dv0\x00\x03\x00\x17\x00\x00\x00\x00\x7f]\xfcA\x19\x04]it]et' \ + expected = b'\x1bt\x00\n' \ + b'\x1dv0\x00\x03\x00\x17\x00\x00\x00\x00\x7f]\xfcA\x19\x04]it]et' \ b']ItA=\x04\x7fU\xfc\x00\x0c\x00y~t4\x7f =\xa84j\xd9\xf0\x05\xd4\x90\x00' \ - b'i(\x7f<\xa8A \xd8]\'\xc4]y\xf8]E\x80Ar\x94\x7fR@\x00\x00\x00' + b'i(\x7f<\xa8A \xd8]\'\xc4]y\xf8]E\x80Ar\x94\x7fR@\x00\x00\x00' \ + b'\n\n' assert(instance.output == expected)