[Python-es] Codigo Barra - Reportlab

ariel illanes illanesariel en gmail.com
Mar Sep 25 13:47:17 CEST 2007


Hola gente : He echo un pequeño programita en python que me genera el codigo
de barra a partir de un diccionario que tengo en la misma aplicacion
ejemplos:
from reportlab.extensions.barcode import code93

from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus import Frame
from reportlab.lib.units import mm

def run():

   _patterns = {
 '0' : ('AcAaAb', 0),  '1' : ('AaAbAc', 1),  '2' : ('AaAcAb', 2),
 '3' : ('AaAdAa', 3),  '4' : ('AbAaAc', 4),  '5' : ('AbAbAb', 5),
 '6' : ('AbAcAa', 6),  '7' : ('AaAaAd', 7),  '8' : ('AcAbAa', 8),
 '9' : ('AdAaAa', 9),  'A' : ('BaAaAc', 10), 'B' : ('BaAbAb', 11),
 'C' : ('BaAcAa', 12), 'D' : ('BbAaAb', 13), 'E' : ('BbAbAa', 14),
 'F' : ('BcAaAa', 15), 'G' : ('AaBaAc', 16), 'H' : ('AaBbAb', 17),
 'I' : ('AaBcAa', 18), 'J' : ('AbBaAb', 19), 'K' : ('AcBaAa', 20),
 'L' : ('AaAaBc', 21), 'M' : ('AaAbBb', 22), 'N' : ('AaAcBa', 23),
 'O' : ('AbAaBb', 24), 'P' : ('AcAaBa', 25), 'Q' : ('BaBaAb', 26),
 'R' : ('BaBbAa', 27), 'S' : ('BaAaBb', 28), 'T' : ('BaAbBa', 29),
 'U' : ('BbAaBa', 30), 'V' : ('BbBaAa', 31), 'W' : ('AaBaBb', 32),
 'X' : ('AaBbBa', 33), 'Y' : ('AbBaBa', 34), 'Z' : ('AbCaAa', 35),
 '-' : ('AbAaCa', 36), '.' : ('CaAaAb', 37), ' ' : ('CaAbAa', 38),
 '$' : ('CbAaAa', 39), '/' : ('AaBaCa', 40), '+' : ('AaCaBa', 41),
 '%' : ('BaAaCa', 42), '#' : ('AbAbBa', 43), '!' : ('CaBaAa', 44),
 '=' : ('CaAaBa', 45), '&' : ('AbBbAa', 46),
 'start' : ('AaAaDa', -1),  'stop' : ('AaAaDaA', -2)
}
   #string=_patterns["1"]
   c = Canvas("barcode.pdf")
   #st=code93.MultiWidthBarcode(string)

   code=str(_patterns["2"])
   story = []
   story.append(code93.Standard93(str(code)
   f = Frame(10*mm, 10*mm, 190*mm, 277*mm, showBoundary=0)
   f.addFromList(story, c)

   c.save()

if __name__=='__main__':
   run()

Si prueban y cambian el valor de code=str(_patterns[x])
por algun otro valor del diccionario veran un archivo pdf  con distinto
codigo de barra.
Ahora en el diccionario no veo el 22(la numeracion va de 0 a 9)intente
genera de la siguiente forma:
code=str(_patterns["2"])+str(_patterns["2"])
pero me da error
Alguien me puede decir como seguir para poder generar codigo de barra a
partir de un determinado numero que le paso con python.



Más información sobre la lista de distribución Python-es