Créer une image code barre
Bonjour, voilà que je me trouve devant un problème que je n'arrive pas a régler.
Je dois créer des images faisant apparaitre des codes barre.
J'ai donc créer une external method, qui pointe vers un script python qui s'il n'est pas appelé via Zope, fonctionne.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
import PIL
import base64
def RPPSIMG(text='123456789'):
s=text
size=100,100
image=PIL.Image.new('RGB', size,(255,255,255))
draw = PIL.ImageDraw.Draw(image)
font = PIL.ImageFont.load("/usr/share/fonts/Code39r.ttf")
size=draw.textsize(s, font=font)
image=PIL.Image.new('RGB', size,(255,255,255))
draw = PIL.ImageDraw.Draw(image)
draw.text((1,0), s, font=font,fill=(0,0,0))
return base64.encodestring(image.tostring()) |
J'ai fait un import de PIL car il est probable que zope ait déjà un module Image.
Voici le message derreur :
Citation:
IOError
cannot find glyph data file
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module Products.ExternalMethod.ExternalMethod, line 231, in __call__
__traceback_info__: (('123456789',), {}, ('123456789',))
Module /home/zope/Extensions/imgCodeBar.py, line 11, in RPPSIMG
Module PIL.ImageFont, line 180, in load
Module PIL.ImageFont, line 79, in _load_pilfont
IOError: cannot find glyph data file
je répète que le script fonctionne s'il est utilisé en dehors de Zope.
Avez vous des suggestions.
Nota :
dans zope le code suivant fonctionne
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import PIL
import base64
def RPPSIMG(text='123456789'):
s='13213'
size=100,100
image=PIL.Image.new('RGB', size,(255,255,255))
draw = PIL.ImageDraw.Draw(image)
font = PIL.ImageFont.load_default()
size=draw.textsize(s, font=font)
image=PIL.Image.new('RGB', size,(255,255,255))
draw = PIL.ImageDraw.Draw(image)
draw.text((1,0), s, font=font,fill=(0,0,0))
return base64.encodestring(image.tostring()) |