ich hatte letztens ein Thema zum erstellen von ODT-Dateien mit relatorio erstellt, dass funktioniert zwischenzeitlich: http://www.python-forum.de/viewtopic.php?f=1&t=36130
Nun wollte ich einen Schritt weiter gehen und zusätzlich Bilder mit ein das Dokument einfügen. Im Beispielcode soll nur ein Datum sowie ein Bild eingefügt werden:
Code: Alles auswählen
my_store = {}
my_store ["date"] = datetime.date.today()
with open("test.jpg", "r") as jpgfile:
my_store ["image"] = jpgfile.readlines()
basic = Template(source="", filepath= os.path.join(os.path.expanduser('~'), 'template.odt') )
basic_generated = basic.generate(s=my_store ).render()
file('ODTFILEs.odt', 'wb').write(basic_generated.getvalue())
In die Vorlagen-Datei kommt ein Text-Platzhalter mit dem Inhalt " s.date ", sowie ein Rahmen mit dem Namen " image: (str(s.image), 'image/jpg' " (ohne die doppelten Anführungsstriche).
Leider erhalte ich beim ausführen folgende Fehlermeldung:
Code: Alles auswählen
genshi.template.base.TemplateSyntaxError: unexpected EOF while parsing in expression "__relatorio_make_dimension(__relatorio_store_cache(140432910415416, (str(s.image), 'image/jpg'), '2.531cm', '')" of "attrs" directive (, line 1) (template.odt, line 1)
edit:
Ändere ich den Rahmen in der Vorlage ab auf " image: s.image, 'image/jpg' " (ohne die doppelten Anführungsstriche) erhalte ich die Meldung:
Code: Alles auswählen
Traceback (most recent call last):
File "image.py", line 36, in <module>
basic_generated = basic.generate(s=mystore).render()
File "/usr/local/lib/python2.7/dist-packages/relatorio/templates/base.py", line 34, in render
return self.serializer(self.events)
File "/usr/local/lib/python2.7/dist-packages/relatorio/templates/opendocument.py", line 855, in __call__
for kind, data, pos in stream:
File "/usr/lib/python2.7/dist-packages/genshi/template/base.py", line 618, in _include
for event in stream:
File "/usr/lib/python2.7/dist-packages/genshi/template/markup.py", line 326, in _match
for event in stream:
File "/usr/lib/python2.7/dist-packages/genshi/template/base.py", line 558, in _flatten
for kind, data, pos in stream:
File "/usr/lib/python2.7/dist-packages/genshi/template/directives.py", line 169, in _generate
attrs = _eval_expr(self.expr, ctxt, vars)
File "/usr/lib/python2.7/dist-packages/genshi/template/base.py", line 289, in _eval_expr
retval = expr.evaluate(ctxt)
File "/usr/lib/python2.7/dist-packages/genshi/template/eval.py", line 178, in evaluate
return eval(self.code, _globals, {'__data__': data})
File "<string>", line 1, in <Expression u"__relatorio_make_dimension(__relatorio_store_cache(140715623941688, s.image, 'image/jpg'), '2.531cm', '')">
TypeError: store() takes exactly 3 arguments (4 given)