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])
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))