def print_text():
    """
    API to print a label

    returns: JSON

    Ideas for additional URL parameters:
    - alignment
    """

    return_dict = {"success": False}

    try:
        context = get_label_context(request)
    except LookupError as e:
        return_dict["error"] = e.msg
        return return_dict

    if context["text"] is None:
        return_dict["error"] = "Please provide the text for the label"
        return return_dict

    im = create_label_im(**context)
    if DEBUG:
        im.save("sample-out.png")

    if context["kind"] == ENDLESS_LABEL:
        rotate = 0 if context["orientation"] == "standard" else 90
    elif context["kind"] in (ROUND_DIE_CUT_LABEL, DIE_CUT_LABEL):
        rotate = "auto"

    qlr = BrotherQLRaster(CONFIG["PRINTER"]["MODEL"])
    red = False
    if "red" in context["label_size"]:
        red = True
    create_label(
        qlr,
        im,
        context["label_size"],
        red=red,
        threshold=context["threshold"],
        cut=True,
        rotate=rotate,
    )

    if not DEBUG:
        try:
            be = BACKEND_CLASS(CONFIG["PRINTER"]["PRINTER"])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict["message"] = str(e)
            logger.warning("Exception happened: %s", e)
            return return_dict

    return_dict["success"] = True
    if DEBUG:
        return_dict["data"] = str(qlr.data)
    return return_dict
def print_task(printer, label):
    selected_backend = guess_backend(printer.connection)
    BACKEND_CLASS = backend_factory(selected_backend)['backend_class']

    image = img_label(label)

    # from brother_ql
    qlr = BrotherQLRaster(printer.model)

    create_label(qlr,
                 image,
                 printer.width,
                 threshold=70,
                 cut=True,
                 dither=False,
                 compress=False,
                 red=False)

    try:
        be = BACKEND_CLASS(printer.connection)
        be.write(qlr.data)
        be.dispose()
        del be
    except Exception as e:
        raise NameError(str(e))

    return True
Example #3
0
def print_text():
    """
    API to print a label

    returns: JSON

    Ideas for additional URL parameters:
    - alignment
    """

    return_dict = {'success': False}

    try:
        context = get_label_context(request)
    except LookupError as e:
        return_dict['error'] = e.msg
        return return_dict

    if context['text'] is None:
        return_dict['error'] = 'Please provide the text for the label'
        return return_dict

    im = create_label_im(**context)
    if DEBUG: im.save('sample-out.png')

    if context['kind'] == ENDLESS_LABEL:
        rotate = 0 if context['orientation'] == 'standard' else 90
    elif context['kind'] in (ROUND_DIE_CUT_LABEL, DIE_CUT_LABEL):
        rotate = 'auto'

    red = False
    if context['color'] == 'redandblack':
        red = True

    qlr = BrotherQLRaster(CONFIG['PRINTER']['MODEL'])
    create_label(qlr,
                 im,
                 context['label_size'],
                 threshold=context['threshold'],
                 cut=True,
                 red=red,
                 rotate=rotate)

    if not DEBUG:
        try:
            be = BACKEND_CLASS(CONFIG['PRINTER']['PRINTER'])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG: return_dict['data'] = str(qlr.data)
    return return_dict
Example #4
0
def print_image():
    """
    API to print a label

    returns: JSON

    Ideas for additional URL parameters:
    - alignment
    """

    return_dict = {'success': False}

    try:
        context = get_label_context(request)
    except LookupError as e:
        return_dict['error'] = e.msg
        return return_dict

    if not image_exists(context["file_name"]):
        return_dict['message'] = "Image not in directory"
        logger.warning('Exception happened: Image not in directory')
        return return_dict

    im = Image.open(os.path.join(IMG_DIR, context["file_name"]))

    if context['kind'] == ENDLESS_LABEL:
        rotate = 0 if context['orientation'] == 'standard' else 90
    elif context['kind'] in (ROUND_DIE_CUT_LABEL, DIE_CUT_LABEL):
        rotate = 'auto'

    qlr = BrotherQLRaster(CONFIG['PRINTER']['MODEL'])
    create_label(qlr,
                 im,
                 context['label_size'],
                 cut=True,
                 red=True if "red" in context['label_size'] else False,
                 rotate=rotate)

    if not DEBUG:
        try:
            be = BACKEND_CLASS(CONFIG['PRINTER']['PRINTER'])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG: return_dict['data'] = str(qlr.data)
    return return_dict
Example #5
0
def do_print():
    """
    Receive the image from the frontend and print it
    :return: string a simple 'ok' when no exception was thrown
    """
    im = Image.open(request.files['data'])
    qlr = BrotherQLRaster(MODEL)
    create_label(qlr, im, request.form['size'], threshold=70, cut=False, rotate=0)

    # noinspection PyCallingNonCallable
    be = BACKEND_CLASS(BACKEND_STRING_DESCR)
    be.write(qlr.data)
    be.dispose()
    del be

    return 'ok'
Example #6
0
def do_print():
    """
    Receive the image from the frontend and print it
    :return: string a simple 'ok' when no exception was thrown
    """
    im = Image.open(request.files['data'])
    qlr = BrotherQLRaster(MODEL)
    create_label(qlr, im, request.form['size'], threshold=70, cut=True, rotate=0)

    # noinspection PyCallingNonCallable
    be = BACKEND_CLASS(BACKEND_STRING_DESCR)
    be.write(qlr.data)
    be.dispose()
    del be

    return 'ok'
Example #7
0
def printLabel(name):
    width = 500
    height = 100

    d = Drawing(width, height)
    d.add(String(5, 5, name, fontSize=40, fontName='Helvetica'))
    #d.add(String(5, 5, name, fontSize=60, fontName='Helvetica'))

    qlr = BrotherQLRaster('QL-1050')
    #qlr = BrotherQLRaster('QL-800')
    create_label(qlr,
                 renderPM.drawToPIL(d),
                 LABEL_NAME,
                 rotate=0,
                 cut=True,
                 dpi_600=DPI_600)
    send(qlr.data, PRINTER)
Example #8
0
def print_text():
    """
    API to print a label

    returns: JSON

    Ideas for additional URL parameters:
    - alignment
    """

    return_dict = {'success': False}

    try:
        context = get_label_context(request)
    except LookupError as e:
        return_dict['error'] = e.msg
        return return_dict

    if context['text'] is None:
        return_dict['error'] = 'Please provide the text for the label'
        return return_dict

    im = create_label_im(**context)
    if DEBUG: im.save('sample-out.png')

    qlr = BrotherQLRaster(MODEL)
    rotate = 0 if context['orientation'] == 'standard' else 90
    create_label(qlr, im, context['label_size'], threshold=context['threshold'], cut=True, rotate=rotate)

    if not DEBUG:
        try:
            be = BACKEND_CLASS(BACKEND_STRING_DESCR)
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG: return_dict['data'] = str(qlr.data)
    return return_dict
Example #9
0
 def print_label(self):
     # Prints the generated label for the wine as long as it has been generated
     image = self.temp_dir + '/' + str(self.wine_id) + '.png'
     # If the image file doesn't exist, generate it first
     if not os.path.isfile(image):
         self.generate_label()
     ql_printer = brother_ql.BrotherQLRaster(model='QL-500')
     ql_printer.cut_at_end = False
     brother_ql.create_label(ql_printer,
                             image,
                             label_size='12',
                             cut=False,
                             dither=True,
                             compress=False,
                             red=False,
                             rotate=90)
     printer = brother_ql.backends.pyusb.list_available_devices(
     )[0]['identifier']
     brother_ql.backends.helpers.send(ql_printer.data,
                                      printer_identifier=printer,
                                      backend_identifier='pyusb')
Example #10
0
    def prt(self):
        print(label_type_specs[self.size])
        if label_type_specs[self.size]['kind'] == ENDLESS_LABEL:
            rot = 0 if not self.rotated else 90
        else:
            rot = 'auto'

        if label_type_specs[self.size]['kind'] != 2:
            label_type_specs[
                self.size]['feed_margin'] = config['label']['feed_margin']

        qlr = BrotherQLRaster(config['printer']['model'])
        if config['printer']['model'] in cuttingsupport:
            logger.debug('Printer is capable of automatic cutting.')
            cutting = True
        else:
            logger.debug('Printer is not capable of automatic cutting.')
            cutting = False
        create_label(qlr,
                     self.image,
                     self.size,
                     threshold=30,
                     cut=cutting,
                     rotate=rot)
        try:
            backend_class = backend_factory(backend)['backend_class']
            be = backend_class(config['printer']['device'])
            pprint(vars(be))
            be.write(qlr.data)
            be.dispose()
            del be
            # TODO better feedback from printer
            return "alert-success", "<b>Success:</b>Label printed"
        except Exception as e:
            logger.warning("unable tp print")
            logger.warning(e)
            return "danger", "unable to print"
Example #11
0
def create_raster_file(label_size, in_file, out_file, cut=True):
    qlr = brother_ql.BrotherQLRaster(PRINTER_MODEL)
    brother_ql.create_label(qlr, in_file, label_size, cut=cut)
    with open(out_file, 'wb') as f:
        f.write(qlr.data)
Example #12
0
def print_text(**data):
    global DEBUG, FONTS, DEFAULT_FONT, MODEL, BACKEND_CLASS, BACKEND_STRING_DESCR, DEFAULT_ORIENTATION, DEFAULT_LABEL_SIZE
    BACKEND_STRING_DESCR = data["printer_uri"]  # "tcp://192.168.0.10:9100"
    font_folder = "./static/fonts"
    selected_backend = guess_backend(BACKEND_STRING_DESCR)
    BACKEND_CLASS = backend_factory(selected_backend)["backend_class"]
    MODEL = data["printer_model"]  # "QL-720NW"
    DEFAULT_LABEL_SIZE = data["label_size"]  # "62x100"
    DEFAULT_ORIENTATION = data["orientation"]  # "rotated"

    FONTS = get_fonts()
    if font_folder:
        FONTS.update(get_fonts(font_folder))

    status = False

    try:
        context = get_label_context(
            data["first_name"], data["last_name"], data["company"], data["label_size"]
        )
    except LookupError as e:
        return status

    if context["name"] is None:
        return status

    if context["company"] is None:
        context["company"] = ""

    if context["last_name"] is None:
        context["name"] = context["first_name"]

    context["event_name"] = data["event_name"]
    context["logo"] = data["logo"]
    context["label_tpl"] = data["label_tpl"]
    context["ticket_type"] = data["ticket_type"]
    im = eval("create_label_im_" + data["label_size"])(**context)
    if data["debug"]:
        data["image"] = im
        try:
            im.save(
                settings.MEDIA_ROOT
                + "/cache/label-%s_%s.png" % (data["first_name"], data["last_name"])
            )
        except FileNotFoundError:
            os.mkdir(settings.MEDIA_ROOT + "/cache")
            im.save(
                settings.MEDIA_ROOT
                + "/cache/label-%s_%s.png" % (data["first_name"], data["last_name"])
            )
    else:
        qlr = BrotherQLRaster(MODEL)
        rotate = 0 if data["orientation"] == "standard" else 90
        if context["label_size"] == "62x29":
            rotate = 0
        create_label(
            qlr,
            im,
            context["label_size"],
            threshold=context["threshold"],
            cut=True,
            rotate=rotate,
        )

        try:
            be = BACKEND_CLASS(BACKEND_STRING_DESCR)
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return status
    status = True
    return status
Example #13
0
    def run(self):

        inputTwitter = window.rootObject().findChild(QObject, 'inputTwitter')
        inputTwitter.select(0,0)
        if inputTwitter.property('text') == "@twitter" or len(inputTwitter.property("text")) < 1:
            inputTwitter.setProperty("visible", False)
            
        inputName = window.rootObject().findChild(QObject, 'inputName')
        inputName.select(0,0)

        checkboxSelected = True#window.rootObject().findChild(QObject, 'checkboxSelected').property('visible')
        
        label = window.rootObject().findChild(QObject, 'textLos')

        ticket = ''
        if checkboxSelected:
            ticket = self.get_ticket_number()
            label.setProperty("text", "Los #%s" % ticket)
            #label.setProperty("visible", True)

        inputName.setProperty('focus', False)
        inputTwitter.setProperty('focus', False)

        badge = window.rootObject().findChild(QObject, 'badge')
        image = QPixmap.grabWidget(window, badge.x(), badge.y(), badge.width(), badge.height())

        window.rootObject().findChild(QObject, "animateNameBadgeOff").start()

        self.app.processEvents(QEventLoop.AllEvents, 2000)

        bytes = QByteArray()
        buffer = QBuffer(bytes)
        buffer.open(QIODevice.WriteOnly)
        image.save(buffer, "PNG")
        buffer.close()

        img = PIL.Image.open(BytesIO(bytes.data()))
        img.thumbnail((2000, 413))
        img = img.rotate(90)
        print (img.size)
        qlr = BrotherQLRaster(config['type'])
        qlr.exception_on_warning=True
        
        create_label(qlr, img, '38')
        selected_backend = 'linux_kernel'
        
        be = backend_factory(selected_backend)
        list_available_devices = be['list_available_devices']
        BrotherQLBackend       = be['backend_class']
        printer = BrotherQLBackend(config['device'])
        printer.write(qlr.data)
        r = ">"
        while r:
            r = printer.read()
            print (r)
        print ("\nDone printing!")
        
        
        
        c = self.conn.cursor()
        c.execute(""" INSERT INTO badges (created, name, twitter,
        ticket) VALUES (datetime('now'),?,?,?) """,
                  (inputName.property('text'), inputTwitter.property('text'),
                   ticket))
        self.conn.commit()
        c.close()
        QTimer.singleShot(2000, lambda: self.reset_ui())
Example #14
0
def print_text():
    """
    API to print a label

    returns: JSON

    Ideas for additional URL parameters:
    - alignment
    """

    return_dict = {'success': False}

    try:
        context = get_label_context(request)
    except LookupError as e:
        return_dict['message'] = e.msg
        return return_dict

    if not context['text'] or context['text'] is None:
        return_dict['message'] = 'Please provide the text for the label'
        return return_dict

    if not context['printer_name'] or context['printer_name'] is None:
        return_dict['message'] = 'Please select a printer'
        return return_dict

    im = create_label_im(**context)
    if DEBUG: im.save('sample-out.png')

    if context['kind'] == ENDLESS_LABEL:
        rotate = 0 if context['orientation'] == 'standard' else 90
    elif context['kind'] in (ROUND_DIE_CUT_LABEL, DIE_CUT_LABEL):
        rotate = 'auto'

    qlr = BrotherQLRaster(PRINTERS[context['printer_name']]["MODEL"])
    create_label(qlr,
                 im,
                 context['label_size'],
                 threshold=context['threshold'],
                 cut=True,
                 rotate=rotate)

    try:
        selected_backend = guess_backend(
            PRINTERS[context['printer_name']]["LOCATION"])
    except Exception as e:
        return_dict['message'] = str(e)
        return return_dict

    BACKEND_CLASS = backend_factory(selected_backend)['backend_class']

    if not DEBUG:
        try:
            be = BACKEND_CLASS(PRINTERS[context['printer_name']]["LOCATION"])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG: return_dict['data'] = str(qlr.data)
    return return_dict
Example #15
0
def print_text():
    """
    API to print a label

    returns: JSON

    Ideas for additional URL parameters:
    - alignment
    """

    return_dict = {'success': False}

    try:
        context = get_label_context(request)
    except LookupError as e:
        return_dict['error'] = e.msg
        return return_dict

    if context['text'] is None:
        return_dict['error'] = 'Please provide the text for the label'
        return return_dict

    im = create_label_im(**context)
    if DEBUG:
        im.save('sample-out.png')

    if context['kind'] == ENDLESS_LABEL:
        rotate = 0 if context['orientation'] == 'standard' else 90
    elif context['kind'] in (ROUND_DIE_CUT_LABEL, DIE_CUT_LABEL):
        rotate = 'auto'

    qlr = BrotherQLRaster(CONFIG['PRINTER']['MODEL'])
    red = False
    if 'red' in context['label_size']:
        red = True

    if context['image_mode'] == 'grayscale':
        dither = True
    else:
        dither = False

    threshold = (context['image_bw_threshold'] / 255) * 100

    for cnt in range(1, context['print_count'] + 1):
        if context['cut_mode'] == 'cut':
            cut = True
        elif context['cut_mode'] == 'cut_once' and cnt == context[
                'print_count']:
            cut = True
        else:
            cut = False

        create_label(qlr,
                     im,
                     context['label_size'],
                     red=red,
                     dither=dither,
                     threshold=threshold,
                     cut=cut,
                     rotate=rotate)

    if not DEBUG:
        try:
            be = BACKEND_CLASS(CONFIG['PRINTER']['PRINTER'])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG:
        return_dict['data'] = str(qlr.data)
    return return_dict
def create_raster_file(label_size, in_file, out_file, cut=True):
	qlr = brother_ql.BrotherQLRaster(PRINTER_MODEL)
	brother_ql.create_label(qlr, in_file, label_size, cut=cut)
	with open(out_file, 'wb') as f:
		f.write(qlr.data)
Example #17
0
    img = Image.new('L', (696, 128), 255)

    # Add DataMatrix barcode
    code = barcode('datamatrix',
                   text,
                   options={'rows': 16, 'columns': 16},
                   margins=10)                              # type: Image
    img.paste(code.rotate(90).resize((128,128)), (0,0))

    # Add ID text
    txt = Image.new('L', (128,35), 255)
    draw = ImageDraw.Draw(txt)
    font = ImageFont.truetype("Ubuntu-Regular.ttf", 30)
    tw,th = draw.textsize(text, font)
    draw.text(((128-tw)//2, 0), text, 0, font=font)
    draw.line((0,34,128,34))
    txt = txt.rotate(90, expand=1)
    img.paste(txt, (128,0))

    img.paste(img, (128+35+15,0))
    img.paste(img, ((128+35+15)*2,0))

    # Save image
    img.save('label.bmp')

    if not TESTING:
        # Print label
        qlr = BrotherQLRaster('QL-700')
        create_label(qlr, img, '62', threshold=70, cut=True)
        printer.write(qlr.data)
Example #18
0
def print_image():
    return_dict = {'success': False}

    logger.warning(request)

    try:
        #context = get_label_context(request)
        context = {}
        logger.warning(context)
    except LookupError as e:
        return_dict['error'] = e.msg
        return return_dict

    import requests
    from PIL import Image, ImageOps
    from io import BytesIO
    import os

    # load image from the upload request ..

    print('file names:')
    for k in request.files.keys():
        print(k)

    upload = request.files.get('photos')
    name = upload.filename
    image_name = 'last-image-%s' % name
    if (os.path.exists(image_name)):
        os.remove(image_name)
    upload.save(image_name)

    im = Image.open(image_name)

    width, height = im.size

    i2 = Image.new('RGB', (696, height), '#ffffff')

    context['width'] = 696
    context['height'] = height

    context['label_size'] = "62"
    context['threshold'] = 70
    rotate = 0

    print('image height: %d' % height)

    qlr = BrotherQLRaster(CONFIG['PRINTER']['MODEL'])
    create_label(qlr,
                 im,
                 context['label_size'],
                 threshold=context['threshold'],
                 cut=True,
                 rotate=rotate)

    if not DEBUG:
        try:
            be = BACKEND_CLASS(CONFIG['PRINTER']['PRINTER'])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG: return_dict['data'] = str(qlr.data)
    return return_dict
draw = ImageDraw.Draw(titleImage)
font = ImageFont.truetype("arial.ttf", int(y / 5))
draw.text((0, 0), title_text, font=font)
titleImage.save("tmp4.bmp")

newImage.paste(titleImage, (0, 0))
newImage.paste(img, (0, int(y // 4 + 1)))
newImage.save("tmp1.bmp")
newImage.paste(textImage, (x, int(y // 4 + 1)))
newImage.save("tmp3.bmp")

# 29x90 Codes 306x 991
qlr = brother_ql.BrotherQLRaster('QL-700')
qlr.exception_on_warning = True
brother_ql.create_label(qlr, newImage, '62')
fo = open(mypath2, 'wb')
fo.write(qlr.data)
fo.close()

be = backend_factory('pyusb')
list_available_devices = be['list_available_devices']
BrotherQLBackend = be['backend_class']

ad = list_available_devices()
for printer in ad:
    print("HERE")
    print(ad)
    print(printer['identifier'])

string_descr = ad[0]['identifier']
Example #20
0
def print_text(**data):
    global DEBUG, FONTS, DEFAULT_FONT, MODEL, BACKEND_CLASS, BACKEND_STRING_DESCR, DEFAULT_ORIENTATION, DEFAULT_LABEL_SIZE
    BACKEND_STRING_DESCR = data['printer_uri']  # "tcp://192.168.0.10:9100"
    font_folder = "./static/fonts"
    selected_backend = guess_backend(BACKEND_STRING_DESCR)
    BACKEND_CLASS = backend_factory(selected_backend)['backend_class']
    MODEL = data['printer_model']  # "QL-720NW"
    DEFAULT_LABEL_SIZE = data['label_size']  # "62x100"
    DEFAULT_ORIENTATION = data['orientation']  # "rotated"

    FONTS = get_fonts()
    if font_folder:
        FONTS.update(get_fonts(font_folder))

    status = False

    try:
        context = get_label_context(data['first_name'], data['last_name'],
                                    data['company'], data['label_size'])
    except LookupError as e:
        return status

    if context['name'] is None:
        return status

    if context['company'] is None:
        context['company'] = ''

    if context['last_name'] is None:
        context['name'] = context['first_name']

    context['event_name'] = data['event_name']
    context['logo'] = data['logo']
    context['label_tpl'] = data['label_tpl']
    context['ticket_type'] = data['ticket_type']
    im = eval('create_label_im_' + data['label_size'])(**context)
    if data['debug']:
        data['image'] = im
        try:
            im.save(settings.MEDIA_ROOT + '/cache/label-%s_%s.png' %
                    (data['first_name'], data['last_name']))
        except FileNotFoundError:
            os.mkdir(settings.MEDIA_ROOT + '/cache')
            im.save(settings.MEDIA_ROOT + '/cache/label-%s_%s.png' %
                    (data['first_name'], data['last_name']))
    else:
        qlr = BrotherQLRaster(MODEL)
        rotate = 0 if data['orientation'] == 'standard' else 90
        if context['label_size'] == '62x29':
            rotate = 0
        create_label(qlr,
                     im,
                     context['label_size'],
                     threshold=context['threshold'],
                     cut=True,
                     rotate=rotate)

        try:
            be = BACKEND_CLASS(BACKEND_STRING_DESCR)
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return status
    status = True
    return status
Example #21
0
def print_qrcodetracker():
    return_dict = {'success': False}

    try:
        context = get_label_context(request)
        logger.warning(context)
    except LookupError as e:
        return_dict['error'] = e.msg
        return return_dict

    import requests
    from PIL import Image, ImageOps
    from io import BytesIO

    r = requests.get('https://api.qrserver.com/v1/create-qr-code/',
                     params={
                         'data': context['qr'],
                         'size':
                         '%sx%s' % (context['qrsize'], context['qrsize'])
                     })
    logger.warning('REQUEST URL: %s' % (r.url))
    logger.warning(r)
    logger.warning('contents:')
    logger.warning(r.content)
    im = Image.open(BytesIO(r.content))

    im = im.convert('RGB')
    im.save('last-qrcode.png')

    if context['kind'] == ENDLESS_LABEL:
        rotate = 0 if context['orientation'] == 'standard' else 90
    elif context['kind'] in (ROUND_DIE_CUT_LABEL, DIE_CUT_LABEL):
        rotate = 'auto'

    if rotate == 0:
        i2 = Image.new('RGB', (696, context['qrsize']), '#ffffff')
    else:
        i2 = Image.new('RGB', (context['qrsize'], 696), '#ffffff')


#    i2 = ImageOps.expand(im, border=300, fill='#ffffff')
#    im = i2.crop((0,300, 696,300+context['qrsize']))

# create multiple qrcodes on the label ...
    xoffset = 0

    im3 = create_label_im(**context)

    im33 = im3.convert('RGB')
    im33.save('last-text-0.png')

    i2.paste(im3, (0, 0))

    im33 = i2.convert('RGB')
    im33.save('last-text-1.png')

    i2.paste(im, (0, 100))

    im33 = i2.convert('RGB')
    im33.save('last-text-2.png')

    context['width'] = 696
    context['height'] = context['qrsize']

    qlr = BrotherQLRaster(CONFIG['PRINTER']['MODEL'])
    create_label(qlr,
                 i2,
                 context['label_size'],
                 threshold=context['threshold'],
                 cut=True,
                 rotate=rotate)

    if not DEBUG:
        try:
            be = BACKEND_CLASS(CONFIG['PRINTER']['PRINTER'])
            be.write(qlr.data)
            be.dispose()
            del be
        except Exception as e:
            return_dict['message'] = str(e)
            logger.warning('Exception happened: %s', e)
            return return_dict

    return_dict['success'] = True
    if DEBUG: return_dict['data'] = str(qlr.data)
    return return_dict