我想在openerp报告中做这样的事情,我将如何创建这个文件路径:
<image file="images\[[o.name]]" x="72" y="72"/>
有没有办法在rml中创建变量,然后我可以将其输入到file = attribute。
我几乎没有蟒蛇知识,但很想解决这个问题。
现在我正在尝试调整order.rml,我可以加载图片,但只能静态...
答案 0 :(得分:7)
在报告.py文件中添加如下的python函数:
self.localcontext.update({
'time': time,
'image_url' : self._get_imagepath,
})
def _get_imagepath(self,product):
attach_ids = self.pool.get('ir.attachment').search(self.cr, self.uid, [('res_model','=','product.product'), ('res_id', '=',product)])
datas = self.pool.get('ir.attachment').read(self.cr, self.uid, attach_ids)
if len(datas):
# if there are several, pick first
try:
if datas[0]['link']:
try:
img_data = base64.encodestring(urllib.urlopen(datas[0]['link']).read())
return img_data
except Exception,innerEx:
print innerEx
elif datas[0]['datas']:
return datas[0]['datas']
except Exception,e:
print e
return None
rml中的本身调用函数:
<para>[[ image_url(o['id']) and setTag('para','image') or removeParentNode('para') ]][[ image_url(o['id']) ]]</para>
答案 1 :(得分:1)
你可以做到
<image>o.company_id.logo</image>
或以任何有意义的方式引用您的图片,您将在订单上显示公司徽标,您可以将图像字段添加到您的产品中,并在需要时在订单的行项目上显示这些字段。
答案 2 :(得分:1)
您也可以在
中执行以下操作<header>
<pageTemplate>
<frame id="first" x1="1.3cm" y1="2.5cm" height="23.0cm" width="19cm"/>
<pageGraphics>
<image file= "/home/workspace/openERP/src/openerp-server/pixmaps/client-logo.png" x="3.3cm" y="3.5cm" height="32.0"/>
</pageGraphics>
</pageTemplate>
答案 3 :(得分:1)
由于我无法评论艾伦贝尔的解决方案,我担心我必须在单独的答案中纠正他。
Alan写道你可以使用:
<image>o.company_id.logo</image>
这不完全正确;你需要将表达式括在双方括号中,如下所示:
<image>[[ o.company_id.logo ]]</image>
对于您可以传递给图片代码的属性,我会将您重定向到RML文档:http://www.reportlab.com/docs/rml2pdf-userguide.pdf