Publicidad

viernes, 10 de junio de 2016

Generación de Codigos de Barra PDF417 con Python y la libreria Elaphe

Códigos de Barra PDF 417 con Elaphe y Odoo



Instalamos la libreia elaphe la cual sera nuestra herramienta principal en este ejercicio:

sudo apt-get install python-elaphe

Si utilizamos el gestor de librerias Pip:

sudo pip install elaphe

Como cualquier otra libreria necesitamos importarla en nuestro codigo:
>>> from elaphe import barcode

Un ejemplo completo utilizando elaphe y codigo de barras pdf 417:

from elaphe import barcode
bc = barcode('pdf417', "Bienvenidos a poncesoft.blogspot.com", options=dict(eclevel=2, compact=True, columns=2, rows=10), margin=1, scale=2)
bc.save('test.png')

El primer parámetro de la función barcode es el tipo de código de barras a generar, el segundo es la cadena que convertiremos a  imagen utilizando código de barras

Otros códigos de barra que podemos implementar con la librería elaphe son:

from elaphe import barcode
barcode('qrcode', 'Hello Barcode Writer In Pure PostScript.', options=dict(version=9, eclevel='M'), margin=10, data_mode='8bits').show()
barcode('code128', '^104^102Count^0990123456789^101!', options=dict(includetext=True), scale=2, margin=1).show()
barcode('pdf417', '^453^178^121^239', options=dict(columns=2, rows=10), margin=1, scale=2).show()
barcode('upc', '78858101497', options=dict(includetext=True), scale=2, margin=1).show()
barcode('royalmail', 'LE28HS9Z', options=dict(includetext=False), scale=2, margin=1).show()
barcode('datamatrix', '^142^164^186', options=dict(columns=32, rows=32), margin=1, scale=2.0).show()
barcode('code11', '0123456789', options=dict(includetext=True), scale=2, margin=1).show()
barcode('code25', '0123456789', options=dict(includetext=False, includecheck=False), scale=2, margin=1).show()
barcode('code39', 'THIS IS CODE39', options=dict(includetext=True), scale=2, margin=1).show()
barcode('code93', 'THIS IS CODE93', options=dict(includetext=True), scale=2, margin=1).show()
barcode('japanpost', '1231FZ13XHS', options=dict(includetext=False), scale=2, margin=1).show()
barcode('azteccode', '00100111001000000101001101111000010100111100101000000110', margin=1).show()
barcode('auspost', '5956439111ABA 9', options=dict(includetext=False), scale=2, margin=1).show()
barcode('ean13', '977147396801', options=dict(includetext=True), scale=2, margin=1).show()
barcode('interleaved2of5', '24012345678905', options=dict(includetext=True), scale=2, margin=1).show()
barcode('raw', '331132131313411122131311333213114131131221323', options=dict(includetext=True), scale=2, margin=1).show()
barcode('kix', '1231FZ13XHS', options=dict(includetext=False), scale=2, margin=1).show()
barcode('postnet', '012345', options=dict(includetext=True), scale=2, margin=1).show()
barcode('pharmacode', '117480', options=dict(includetext=True), scale=2, margin=1).show()
barcode('plessey', '012345ABCD', options=dict(includetext=True), scale=2, margin=1).show()
barcode('symbol', 'fimd', options=dict(includetext=True), scale=2, margin=1).show()
barcode('onecode', '0123456709498765432101234567891', options=dict(includetext=True), scale=2, margin=1).show()
barcode('maxicode', '^059^042^041^059^040^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291^0471^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^030^062^004^063', options=dict(mode=2), margin=1, scale=4).show()
barcode('msi', '0123456789', options=dict(includetext=True), scale=2, margin=1).show()
barcode('rss14', '24012345678905', options=dict(linkage=True, includetext=True), scale=2, margin=1).show()
barcode('rationalizedCodabar', 'A012345

Implementación con Odoo

Para nuestros módulos básicamente es lo mismo, pero nos apoyaremos de otras librerias que nos ayudaran a generar archivos en la partición temporal del sistema, primero importamos:

from elaphe import barcode
import os
import base64
import hashlib
import tempfile

Un ejemplo es el siguiente:
# Instanciamos el metodo principal barcode
bc = barcode('pdf417', "Bienvenidos a poncesoft.blogspot.com", options=dict(eclevel=2, compact=False, columns=2, rows=10), margin=1, scale=2)
# Generamos un nombre y ruta temporal
fname=tempfile.NamedTemporaryFile(suffix='.png',delete=False)
# Asigamos el nombre temporal a una variable
temporal_name = fname.name
# Guardamos nuestra imagen generada con elaphe y la ruta temporal
bc.save(fname.name)
# Podemos manipular la imagen ya generada
f = open(fname.name, "r")
data = f.read()
f.close()

1 comentario: