def _get_pdf417_code(self): for invoice_id in self: res = [] if invoice_id.name and invoice_id.journal_id.is_cpe: res.append(invoice_id.company_id.partner_id.doc_number) res.append(invoice_id.journal_id.pe_invoice_code or '') res.append(invoice_id.name.split("-")[0] or '') res.append(invoice_id.name.split("-")[1] or '') res.append(str(invoice_id.amount_tax)) res.append(str(invoice_id.amount_total)) res.append(str(invoice_id.invoice_date)) res.append(invoice_id.partner_id.doc_type or "-") res.append(invoice_id.partner_id.doc_number or "-") res.append(invoice_id.pe_digest or "") res.append(invoice_id.pe_signature or "") res.append("") pdf417_string = '|'.join(res) data_bytes = compact_bytes(to_bytes(pdf417_string, 'utf-8')) code_words = encode_high(data_bytes, 10, 5) rows = list(chunks(code_words, 10)) codes = list(encode_rows(rows, 10, 5)) image = render_image(codes, scale=2, ratio=2, padding=7) # tmpf = tempfile.TemporaryFile(mode="r+") tmpf = BytesIO() image.save(tmpf, 'png') # tmpf.seek(0) invoice_id.sunat_pdf417_code = encodestring(tmpf.getvalue())
def __init__(self, encodedData: string, columns: int, security_level: int, scale: int, ratio: int): codes = encode(encodedData, columns=columns, security_level=security_level) self.EncodedData = encodedData self.OriginalImage = render_image(codes, scale=scale, ratio=ratio) self.OriginalNumpy = np.array(self.OriginalImage) self.crappify()
def _get_pdf417_code(self): for picking_id in self: res = [] if picking_id.pe_guide_number and picking_id.pe_is_eguide: res.append(picking_id.company_id.partner_id.doc_number) res.append('09') res.append(picking_id.pe_guide_number.split("-")[0] or '') res.append(picking_id.pe_guide_number.split("-")[1] or '') # res.append(str(picking_id.amount_tax)) # res.append(str(picking_id.amount_total)) res.append(str(picking_id.pe_date_issue)) res.append(picking_id.partner_id.doc_type or "-") res.append(picking_id.partner_id.doc_number or "-") res.append(picking_id.pe_digest or "") res.append(picking_id.pe_signature or "") res.append("") pdf417_string = '|'.join(res) data_bytes = compact_bytes(to_bytes(pdf417_string, 'utf-8')) code_words = encode_high(data_bytes, 10, 5) rows = list(chunks(code_words, 10)) codes = list(encode_rows(rows, 10, 5)) image = render_image(codes, scale=2, ratio=2, padding=7) tmpf = BytesIO() image.save(tmpf, 'png') # tmpf.seek(0) picking_id.sunat_pdf417_code = encodestring(tmpf.getvalue())
def codificador(data, reserva): # Convert to code words # columns default = 6, security_level default = 2 codigo = encode(str(data), security_level=7) # Genera un codigo de barras como imagen imagen = render_image(codigo) imagen.save(MEDIA_ROOT + '/barcode.png') reserva.codigo = MEDIA_ROOT + '/barcode.png' reserva.save()
def pdf417bc(ted): bc = pdf417gen.encode( ted, security_level=5, columns=13, ) image = pdf417gen.render_image( bc, padding=15, scale=1, ) return image
def test_render_image(): width, height = barcode_size(codes) image = render_image(codes) assert isinstance(image, Image) image = render_image(codes, scale=1, ratio=1, padding=0) assert image.size == (width, height) image = render_image(codes, scale=2, ratio=1, padding=0) assert image.size == (2 * width, 2 * height) image = render_image(codes, scale=2, ratio=2, padding=0) assert image.size == (2 * width, 4 * height) image = render_image(codes, scale=2, ratio=2, padding=20) assert image.size == (2 * width + 40, 4 * height + 40) # Check actual pixels fg_color = "LemonChiffon" bg_color = "#aabbcc" fg_parsed = (255, 250, 205) bg_parsed = (170, 187, 204) image = render_image(codes, scale=1, ratio=1, padding=0, fg_color=fg_color, bg_color=bg_color) px = image.load() for column, row, visible in modules(codes): expected = fg_parsed if visible else bg_parsed assert px[column, row] == expected
def _firmar_dd(data, folio, instance): timestamp = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S") productos = data.get('productos') primero = productos[0].get('item_name') data['primero'] = primero # Ajustados montos y rut para el xml if ('k' in folio.rut): folio.rut = folio.rut.replace('k', 'K') if ('k' in data['rut']): data['rut'] = data['rut'].replace('k', 'K') if ('.' in data['rut']): data['rut'] = data['rut'].replace('.', '') data['neto'] = str(round(float(data['neto']))) data['total'] = str(round(abs(float(data['total'])))) if data.get('senores') is None: data['senores'] = instance.senores if isinstance(instance.fecha, str): instance.fecha = datetime.datetime.strptime( instance.fecha, "%Y-%m-%d") sin_aplanar = render_to_string( 'snippets/dd_tag.xml', { 'data': data, 'folio': folio, 'instance': instance, 'timestamp': timestamp }) digest_string = sin_aplanar.replace('\n', '').replace('\t', '').replace('\r', '') RSAprivatekey = RSA.importKey(folio.pem_private) private_signer = PKCS1_v1_5.new(RSAprivatekey) digest = SHA.new() digest.update(digest_string.encode('iso8859-1')) sign = private_signer.sign(digest) firma = '<FRMT algoritmo="SHA1withRSA">{}</FRMT>'.format( b64encode(sign).decode()) sin_aplanar += firma carpeta = data['numero_factura'].replace('º', '') try: xml_dir = settings.MEDIA_ROOT + carpeta if (not os.path.isdir(xml_dir)): os.makedirs(xml_dir) codes = encode(sin_aplanar, columns=10, security_level=5) image = render_image(codes, scale=1, ratio=1) image.save(xml_dir + '/timbre' + '.jpg') except Exception as e: print(e) return sin_aplanar
def pdf417bc(self, ted, columns=13, ratio=3): bc = pdf417gen.encode( ted, security_level=5, columns=columns, ) image = pdf417gen.render_image( bc, padding=15, scale=1, ratio=ratio, ) return image
def pdf417bc(self, ted): bc = pdf417gen.encode( ted, security_level=5, columns=13, encoding='ISO-8859-1', ) image = pdf417gen.render_image( bc, padding=10, scale=3, ) return image
def pdf417bc(ted): """ Funcion creacion de imagen pdf417 basada en biblioteca elaphe @author: Daniel Blanco Martin (daniel[at]blancomartin.cl) @version: 2016-05-01 """ bc = pdf417gen.encode( ted, security_level=5, columns=13, ) image = pdf417gen.render_image( bc, padding=15, scale=1, ) return image
def crt_aud_barcode(aud, ids): from pdf417gen import encode, render_image ELEM_LEN = 4 assert ELEM_LEN == 4 # Иначе переделывать нужно HASH_CONST = [197, 3, 150, 172] data_d = [id.zfill(ELEM_LEN)[-ELEM_LEN:] for id in ids] to_save_s = str(aud).zfill(ELEM_LEN) + ''.join(data_d) to_save_b = to_save_s.encode() control_summ_b = bytes([ sum([x * HASH_CONST[i] % 256 for x in to_save_b[i::4]]) % 256 for i in range(4) ]) to_save_b += control_summ_b to_save_z = zlib.compress(to_save_b) codes = encode(to_save_z, columns=28, security_level=5) image = render_image(codes, scale=1, padding=0) image.save( os.path.join(DUMMY_FOLDER_PATH, BARCODES, 'barcode_{}.png'.format(aud)))
def do_encode(args): args = get_parser().parse_args(args) text = args.text # If no text is given, check stdin if not text: text = sys.stdin.read() if not text: print_err("No input given") return try: codes = encode( text, columns=args.columns, security_level=args.security_level, encoding=args.encoding, ) image = render_image( codes, scale=args.scale, ratio=args.ratio, padding=args.padding, fg_color=args.fg_color, bg_color=args.bg_color, ) except Exception as e: print_err(str(e)) return if args.output: image.save(args.output) else: image.show()
def do_encode(args): args = get_parser().parse_args(args) text = args.text # If no text is given, check stdin if not text: text = sys.stdin.read() if not text: print_err("No input given") return try: codes = encode( text, columns=args.columns, security_level=args.security_level, encoding=args.encoding, ) image = render_image( codes, scale=args.scale, ratio=args.ratio, padding=args.padding, fg_color=args.fg_color, bg_color=args.bg_color, ) except Exception as e: print_err(str(e)) return if args.output: image.save(args.output) else: image.show()
def test_render_image(): width, height = barcode_size(codes) image = render_image(codes) assert isinstance(image, Image) image = render_image(codes, scale=1, ratio=1, padding=0) assert image.size == (width, height) image = render_image(codes, scale=2, ratio=1, padding=0) assert image.size == (2 * width, 2 * height) image = render_image(codes, scale=2, ratio=2, padding=0) assert image.size == (2 * width, 4 * height) image = render_image(codes, scale=2, ratio=2, padding=20) assert image.size == (2 * width + 40, 4 * height + 40) # Check actual pixels fg_color = "LemonChiffon" bg_color = "#aabbcc" fg_parsed = (255, 250, 205) bg_parsed = (170, 187, 204) image = render_image(codes, scale=1, ratio=1, padding=0, fg_color=fg_color, bg_color=bg_color) px = image.load() for column, row, visible in modules(codes): expected = fg_parsed if visible else bg_parsed assert px[column, row] == expected
def encode(string, name="", flags="", pw=None): global defblocksize global ERROR_CORRECT data = { "NAME": name, "TIMESTAMP": time.time(), "VERSION": version, "TOTAL": None, "LENGTH": len(string), "SIZE": None, "BLOCK": None, "DATA": None, "FILETYPE": None, "FLAGS": flags, "SHA256": str(hashlib.sha256(string).hexdigest()), "UUID": str(uuid.uuid4()).upper() } QR = [] data["FILETYPE"] = magic.from_buffer(string) if name == "": data["NAME"] = "UNNAMED" cmp = zlib.compress(string) if len(cmp) < len(string): data["FLAGS"] = data["FLAGS"] + "[COMPRESSED] " print "Using ZLIB" else: cmp = string if "[MAX]" in flags: ERROR_CORRECT = qrcode.constants.ERROR_CORRECT_L defblocksize = maxblocksize if "[FAX]" in flags: defblocksize = faxblocksize if "[ENCRYPTED]" in flags or "[SEALED]" in flags: if pw == None: print "ENTER PASSWORD FOR ENCRYPTION" pw = raw_input("#> ") if version < 2.0: if len(pw) <= 32: pw = pw + "0" * (32 - len(pw)) else: pw = pw[:32] else: pw = hashlib.sha256(pw).hexdigest()[:32] print pw m = str(hashlib.sha512(str(pw + "PAPERDUMP") * 2).hexdigest())[:16] obj = AES.new(pw, AES.MODE_CFB, m) cmp = obj.encrypt(cmp) pkt = base64.b64encode(cmp) data["SIZE"] = len(pkt) if "[PDF417]" in flags: blocksize = pdfblocksize - len( str(int(math.ceil(len(pkt) / pdfblocksize)))) * 2 - len( json.dumps(data)) else: blocksize = defblocksize - len( str(int(math.ceil(len(pkt) / defblocksize)))) * 2 - len( json.dumps(data)) print "Blocksize: " + str(blocksize) print "Length: " + str(len(pkt)) blocks = int(math.ceil(len(pkt) / blocksize)) data["TOTAL"] = blocks for i in range(0, blocks): print "Encoding block " + str(i + 1) + " / " + str(blocks) dmp = {} cel = pkt[(i * int(blocksize)):((i + 1) * int(blocksize))] dmp["DATA"] = cel data["DATA"] = cel data["BLOCK"] = i + 1 dmp["BLOCK"] = i + 1 dta = json.dumps(data) if "[PDF417]" in flags: codes = pdf417gen.encode(dta, columns=16) image = pdf417gen.render_image(codes) dmp["QR"] = image else: qr = qrcode.QRCode(version=None, error_correction=ERROR_CORRECT, border=4, box_size=1) print "LEN: " + str(len(dta)) qr.add_data(dta) qr.make(fit=False) dmp["QR"] = qr.make_image() QR.append(dmp) data["QR"] = QR return data
def do_encode(args): epilog = "https://github.com/ihabunek/pdf417gen" description = "Generate a bar code from given input" parser = ArgumentParser(epilog=epilog, description=description) parser.add_argument( "text", type=str, nargs="?", help="Text or data to encode. Alternatively data can be piped in.") parser.add_argument("-c", "--columns", dest="columns", type=int, help="The number of columns (default is 6).", default=6) parser.add_argument("-l", "--security-level", dest="security_level", type=int, help="Security level (default is 2).", default=2) parser.add_argument( "-e", "--encoding", dest="encoding", type=str, help="Character encoding used to decode input (default is utf-8).", default='utf-8') parser.add_argument("-s", "--scale", dest="scale", type=int, help="Module width in pixels (default is 3).", default=3) parser.add_argument("-r", "--ratio", dest="ratio", type=int, help="Module height to width ratio (default is 3).", default=3) parser.add_argument("-p", "--padding", dest="padding", type=int, help="Image padding in pixels (default is 20).", default=20) parser.add_argument("-f", "--foreground-color", dest="fg_color", type=str, help="Foreground color in hex (default is '#000000').", default="#000000") parser.add_argument("-b", "--background-color", dest="bg_color", type=str, help="Foreground color in hex (default is '#FFFFFF'.", default="#FFFFFF") parser.add_argument( "-o", "--output", dest="output", type=str, help="Target file (if not given, will just show the barcode).") args = parser.parse_args(args) if not sys.stdin.isatty(): text = sys.stdin.read() elif len(args) > 1: text = args.text else: print_err("No input given") return try: codes = encode( text, columns=args.columns, security_level=args.security_level, encoding=args.encoding, ) image = render_image( codes, scale=args.scale, ratio=args.ratio, padding=args.padding, fg_color=args.fg_color, bg_color=args.bg_color, ) except Exception as e: print_err(str(e)) return if args.output: image.save(args.output) else: image.show()
def _firmar_dd(data, folio, instance): """ Llena los campos de que se encuentran dentro de la etiqueta <DD> del DTE y anade la firma correspondiente en la etiqueta <FMRT>. Retorna la etiqueta <DD> con su contenido, firmada y sin aplanar. """ #now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S").split() # Crea el timestamp con el formato adecuado #timestamp = "{}T{}".format(now[0],now[1]) timestamp = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S") productos = data.get('productos') primero = productos[0].get('item_name') data['primero'] = primero # Ajustados montos y rut para el xml if ('k' in folio.rut): folio.rut = folio.rut.replace('k', 'K') if ('k' in data['rut']): data['rut'] = data['rut'].replace('k', 'K') data['neto'] = str(round(float(data['neto']))) data['total'] = str(round(float(data['total']))) # Llena los campos de la plantilla DD_tag.xml con la informacion del diccionario sin_aplanar = render_to_string( 'snippets/DD_tag.xml', { 'data': data, 'folio': folio, 'instance': instance, 'timestamp': timestamp }) # Elimina tabulaciones y espacios antes de procesar con la funcion de hash digest_string = sin_aplanar.replace('\n', '').replace('\t', '').replace('\r', '') # Importa la clave privada que se encuentra en el CAF que esta siendo utilizado RSAprivatekey = RSA.importKey(folio.pem_private) # Crea el objeto encargado de la firma del documento private_signer = PKCS1_v1_5.new(RSAprivatekey) # Crea el digest digest = SHA.new() digest.update(digest_string.encode('iso8859-1')) # Firma el digest sign = private_signer.sign(digest) # Crea la etiqueta FRMT para la firma firma = '<FRMT algoritmo="SHA1withRSA">{}</FRMT>'.format( b64encode(sign).decode()) # Incorpora la firma al final de la plantilla DD_tag.xml sin_aplanar += firma carpeta = data['numero_factura'].replace('º', '') try: xml_dir = settings.MEDIA_ROOT + 'facturas' + '/' + carpeta if (not os.path.isdir(xml_dir)): os.makedirs(settings.MEDIA_ROOT + 'facturas' + '/' + carpeta) codes = encode(sin_aplanar, columns=10, security_level=5) image = render_image(codes, scale=1, ratio=1) image.save(xml_dir + '/timbre' + '.jpg') except Exception as e: print(e) return sin_aplanar
for _ in x[::res]: x_.append(_.strftime("%H:%M")) df3 = pd.DataFrame({"Energie (KWh)": cons}, index=x_) df3.plot.bar() figure = plt.gcf() figure.set_size_inches(6, 3) plt.tight_layout(w_pad=10, h_pad=10) plt.savefig('cons.png', dpi=250) #qrcode qr = qrcode.make("mellahavenir.com") qr.save("qr.png") #barcode codes = encode("mellahavenir.com", columns=5, security_level=1) image = render_image(codes) image.save("barc.png") #temps d'arrets res = 20 ta = [] for i in range(len(y[::res])): if y[i * res:(i + 1) * res].mean() < 10: ta.append(0) else: ta.append(1) i = 0 j = 0 for obj in ta: if obj == 0: i += 1
parser.add_argument( '-l', '--length', type=int, default=4, help='defines cont of columns in pdf 417 code (optional) default = 4') args = parser.parse_args() e = 0 if args.p417 == 1: if args.dmtx == 1: print("E:Choose only one p417 or dmtx") e = 1 if e == 0: if args.p417 == 1: # Some data to encode text = args.TEXT length = args.length # Convert to code words codes = encode(text, length) # Generate barcode as image image = render_image(codes) # Pillow Image object image.save(args.output) if args.dmtx == 1: T = str(args.TEXT) O = str(args.output) res = ("echo '{}' | dmtxwrite -s s -o '{}'".format(T, O)) sp.run(str(res), shell=True) else: print("E:Script ended with error")
def crearImagenTimbre(self, timbre, archivo_timbre = 'timbre.png') : codes = encode(timbre, columns=18, security_level=6) # configuro la cantidad de columnas y el nivel de seguridad que poseerá el timbre image = render_image(codes) # crea la imagen image.save(archivo_timbre) # guardo la imagen temporalmente
def crearImagenTimbre(self, timbre, archivo_timbre='timbre.png'): codes = encode( timbre, columns=18, security_level=6 ) # configuro la cantidad de columnas y el nivel de seguridad que poseerá el timbre image = render_image(codes) # crea la imagen image.save(archivo_timbre) # guardo la imagen temporalmente
def do_encode(args): args = get_parser().parse_args(args) text = args.text # If no text is given, check stdin if not text: text = sys.stdin.read() if not text: print_err("No input given") return try: codes = encode( text, columns=args.columns, security_level=args.security_level, encoding=args.encoding, ) if args.kind == 'svg': xml = render_svg( codes, scale=args.scale, ratio=args.ratio, padding=args.padding, fg_color=args.fg_color, bg_color=args.bg_color, ) import xml.etree.ElementTree as ET svg = ET.tostring(xml.getroot()) if args.output: #we need to show it with open(args.output, 'w') as f: f.write(svg) else: import tempfile try: from PIL import ImageShow except ImportError: print('!!!!! unable to show svg') f, afn = tempfile.mkstemp(suffix='.svg') os.write(f, svg) os.close(f) for v in ImageShow._viewers: if v.show_file(afn): break else: os.remove(afn) print('!!!!! cannot find svg viewer') else: image = render_image( codes, scale=args.scale, ratio=args.ratio, padding=args.padding, fg_color=args.fg_color, bg_color=args.bg_color, ) if args.output: image.save(args.output) else: image.show() except Exception as e: print_err(str(e)) return
def encode(string, name="", flags=""): data = { "NAME": name, "TIMESTAMP": time.time(), "TOTAL": None, "LENGTH": len(string), "SIZE": None, "BLOCK": None, "DATA": None, "FILETYPE": None, "FLAGS": flags, "SHA256": str(hashlib.sha256(string).hexdigest()) } QR = [] data["FILETYPE"] = magic.from_buffer(string) if name == "": data["NAME"] = "UNNAMED" cmp = zlib.compress(string) if len(cmp) < len(string): data["FLAGS"] = data["FLAGS"] + "[COMPRESSED] " print "Using ZLIB" else: cmp = string if "[ENCRYPTED]" in flags: print "ENTER PASSWORD FOR ENCRYPTION" pw = raw_input("#> ") if len(pw) <= 32: pw = pw + "0" * (32 - len(pw)) else: pw = pw[:32] m = str(hashlib.sha512(str(pw + "PAPERDUMP") * 2).hexdigest())[:16] obj = AES.new(pw, AES.MODE_CFB, m) cmp = obj.encrypt(cmp) pkt = base64.b64encode(cmp) data["SIZE"] = len(pkt) if "[PDF417]" in flags: blocksize = pdfblocksize - len( str(int(math.ceil(len(pkt) / pdfblocksize)))) * 2 - len( json.dumps(data)) else: blocksize = defblocksize - len( str(int(math.ceil(len(pkt) / defblocksize)))) * 2 - len( json.dumps(data)) print "Blocksize: " + str(blocksize) print "Length: " + str(len(pkt)) blocks = int(math.ceil(len(pkt) / blocksize)) data["TOTAL"] = blocks for i in range(0, blocks): print "Encoding block " + str(i + 1) + " / " + str(blocks) dmp = {} cel = pkt[(i * int(blocksize)):((i + 1) * int(blocksize))] dmp["DATA"] = cel data["DATA"] = cel data["BLOCK"] = i + 1 dmp["BLOCK"] = i + 1 dta = json.dumps(data) if "[PDF417]" in flags: codes = pdf417gen.encode(dta, columns=16) image = pdf417gen.render_image(codes) dmp["QR"] = image else: dmp["QR"] = qrcode.make(dta) QR.append(dmp) data["QR"] = QR return data