Пример #1
0
def testBarcode(printjob):
    barcodes = [
        'code39', 'itf', 'ean8/upca', 'upce', 'codabar', 'code128', 'gs1-128',
        'rss'
    ]
    labelprinter = Labelprinter(conf=None, printjob=printjob)
    labelprinter.printBarcode("TEST", barcodes[2])
Пример #2
0
    def do_POST(self):
        self.send_response(301)
        try:
            printMode = "default"

            ctype, pdict = cgi.parse_header(self.headers.get('content-type'))
            logging.debug(log_print(ctype, pdict))
            query = None
            clength = int(self.headers.get('content-length'))

            if ctype == 'multipart/form-data':
                logging.debug(log_print(self.rfile))
                for key in pdict.keys():
                    pdict[key] = pdict[key].encode("utf-8")
                pdict["CONTENT-LENGTH"] = clength
                query = cgi.parse_multipart(self.rfile, pdict)
            elif ctype == 'application/x-www-form-urlencoded':
                if sys.version_info.major == 2:
                    data = self.rfile.read(clength)
                else:
                    data = self.rfile.read(clength).decode('utf-8')
                query = parse_qs(data, keep_blank_values=1)
            elif ctype == "application/json":
                query = json.loads(self.rfile.read(clength).decode("utf-8"))

            if ctype != "application/json":
                strip_query(query)

            logging.debug(log_print(query))
            self.end_headers()

            if query['text'].strip() == '':
                raise RuntimeError('NO TEXT, NO LABEL!')

            self.wfile.write(b"POST OK.\n")
            self.wfile.write("start printing: {}\n".format(
                query['text']).encode("utf-8"))

            labelprinter = Labelprinter(conf=conf)

            if query.get('printMode', '') == 'barcode':
                labelprinter.printBarcode(
                    query['text'],
                    barcode=query.get('barcodeType', 'code39'),
                    characters=query.get('barcodeCharacters', 'on'),
                    height=int(query.get('barcodeHeight', 100)),
                    width=query.get('barcodeWidth', 'medium'),
                    parentheses=query.get('barcodeParentheses', 'on'),
                    ratio=query.get('barcodeRatio', '3:1'),
                    equalize=query.get('barcodeEqualize', 'off'))

            elif printMode == 'pictures':
                logging.debug(log_print('pictures!!!!!!'))
                logging.debug(log_print(query.keys()))

                submit_picture = query.get('submitPicture', [None])[0]
                labelprinter.printPicture(submit_picture)
            else:
                labelprinter.printText(
                    query['text'],
                    charSize=query.get('fontSize', 42),
                    font=query.get('font', 'lettergothic'),
                    align=query.get('align', 'left'),
                    bold=query.get('bold', 'off'),
                    charStyle=query.get('charStyle', 'normal'),
                    cut=query.get('cut', 'full'),
                )

        except Exception as ex:
            if "sentry_sdk" in globals():
                sentry_sdk.capture_exception(ex)

            logging.error(log_print('ERROR:', ex))
            import traceback
            traceback.print_exc()
            self.send_error(500, "ERROR: {}".format(ex))