Пример #1
0
    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())
Пример #2
0
    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()
Пример #3
0
    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())
Пример #4
0
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()
Пример #5
0
 def pdf417bc(ted):
     bc = pdf417gen.encode(
         ted,
         security_level=5,
         columns=13, )
     image = pdf417gen.render_image(
         bc,
         padding=15,
         scale=1, )
     return image
Пример #6
0
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
Пример #7
0
    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
Пример #8
0
 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
Пример #9
0
 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
Пример #10
0
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
Пример #11
0
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)))
Пример #12
0
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()
Пример #13
0
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()
Пример #14
0
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
Пример #15
0
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
Пример #16
0
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()
Пример #17
0
    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
Пример #18
0
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
Пример #19
0
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")
Пример #20
0
 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
Пример #21
0
 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
Пример #22
0
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
Пример #23
0
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