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.
J'ai fait un import de PIL car il est probable que zope ait déjà un module Image.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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())
Voici le message derreur :
je répète que le script fonctionne s'il est utilisé en dehors de Zope.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
Avez vous des suggestions.
Nota :
dans zope le code suivant fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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())
Partager