From c643e1d164de0d50a265d177f5ea157acfeb2398 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 28 Aug 2007 21:27:42 +0000 Subject: [PATCH] Added image support from fields bzr revid: fp@tinyerp.com-10da445d4d43c6c09a2cd15608cf96d95bc2432b --- bin/report/render/rml2pdf/trml2pdf.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index 7aad961bb97..ea096225eee 100755 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -474,6 +474,14 @@ class _rml_flowable(object): drw.render(self.canv, None) return Illustration(node, self.styles, self) + def _textual_image(self, node): + import base64 + rc = '' + for n in node.childNodes: + if n.nodeType in (node.CDATA_SECTION_NODE, node.TEXT_NODE): + rc += n.data + return base64.decodestring(rc) + def _flowable(self, node): if node.localName=='para': style = self.styles.para_style_get(node) @@ -538,9 +546,14 @@ class _rml_flowable(object): return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'}))) elif node.localName=='image': if not node.hasAttribute('file'): - name = '/tmp/image_%d.jpg' % (int(node.getAttribute('name')),) - file(name,'wb+').write( self.doc.images[node.getAttribute('name')].read() ) - return platypus.Image(name, mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height']))) + if self.doc.images.get(node.getAttribute('name'), ''): + name = '/tmp/image_%d.jpg' % (int(node.getAttribute('name')),) + file(name,'wb+').write( self.doc.images[node.getAttribute('name')].read() ) + return platypus.Image(name, mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height']))) + else: + name = '/tmp/image_%d.jpg' % (int(node.getAttribute('name')),) + file(name,'wb+').write( self._textual_image(node)) + return platypus.Image(name, mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height']))) else: return platypus.Image(node.getAttribute('file'), mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height'])))