我有BIRT报告,主页中有图像。
我在报告中嵌入了一个png,它在body
标记之后生成了以下XML:
<list-property name="images">
<structure>
<property name="name">filename.png</property>
<property name="type">image/png</property>
<property name="data">
BASE64 of the image
</property>
</structure>
</list-property>
然后,我将它包含在母版页中,添加了这个元素:
<image id="828">
<property name="source">embed</property>
<property name="imageName">filename.png</property>
</image>
然后,如果我从BIRT设计师那里运行预览,那么HTML和PDF输出效果都很好。如果我使用IPDFRenderOption
(从我的软件)渲染它,它会生成正确的pdf
罚款。 但如果我使用HTMLRenderOption
,则图片不会嵌入到HTML报告中,但会使用以下内容进行呈现:
<img src="file:/.../apache-tomcat-7.0.35/design11.png">
虽然我期待的是:
<img src="data:image/png;base64,BASE64 STUFF THAT I PUT IN THE LIST-PROPERTIES ">
那么,在使用HTMLRenderOption
执行BIRT时,如何将我的图像嵌入HTML文件而不是创建指向它的链接?
答案 0 :(得分:1)
我通过向报告的母版页添加两个不同的图像来解决这个问题:
由于PDF
渲染得很好,我在问题中写了这个图像,并在HTML输出中引出了这个图像的可见性
然后,在母版页中,我添加了一个新图像。这次我没有把它设置为嵌入式。相反,我将其设置为URI
引用。作为URI
我在base64 URI
输出中设置了我需要的HTML
。基本上,我在报告的XML
添加了以下图片:
<image id="1972">
<list-property name="visibility">
<structure>
<property name="format">pdf</property>
<expression name="valueExpr" type="javascript">true</expression>
</structure>
</list-property>
<property name="source">url</property>
<expression name="uri" type="constant">data:image/png;base64, BASE 64 OF MY PNG IMAGE</expression>
</image>
然后我将图像设置为仅HTML
输出可见。
以这种方式BIRT
呈现img
标记URL
我放入XML
,无论它是什么。因此,它将data:image/png;base64, BASE 64 OF MY PNG IMAGE
设为url
。因此它将图像嵌入HTML
输出中。
BIRT支持blob
fiels中的图片,并可以管理将它们添加到您的报告中。要了解具体方法,请参阅:http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.birt.doc%2Fbirt%2Flayout.5.7.html
如果它不起作用,您可以管理在您的网址上插入动态值,仍然无需编辑脚本(但当然使用一些Javascript来决定哪个列包含图像的数据)。
下面是从列中读取base64
值的图像的XML代码:
<image id="1974">
<property name="source">url</property>
<expression name="uri" type="javascript">"data:image/png;base64,"+row["BASE_64_PNG_COLUMN"] </expression>
</image>