java如何从Jasper报告中的存档中提取和使用图像?
我需要在Jasper报告中放入与数据库中的行相匹配的图像。我将图像数据保存在专有的归档文件中,可以用Java代码轻松提取。我需要知道如何将我的Java代码连接到Jasper报告以实现提取过程,类似于BIRT的onRowSets()方法。(我需要关于填充过程如何工作的概述文档。)
如果我定义一个POJO/bean数据源,我将无法轻松地使用数据库。我可以在XML中嵌入必要的Java提取代码吗This example at the Jasper Assistant site似乎表明我可以:
<imageExpression class="java.io.File"> <![CDATA[(new File($P{BaseDir}, "logo_"+$P{ReportCollecter}+".gif").exists()) ? new File($P{BaseDir}, "logo_"+$P{ReportCollecter}+".gif") : new File($P{BaseDir}, "logo_BLANK.gif")]]> </imageExpression>
这是嵌入在XML中的Java代码吗?我愿意编写代码,但我似乎找不到任何完整的类代码示例(我想我需要类似于扩展图像对象的东西)
# 1 楼答案
默认情况下,当前版本的iReport(3.6.0)使用Groovy(一种Java脚本语言),它可以完全访问类路径中的任何Java库
我所要做的就是编写一些代码,从存档中提取图像并返回一个InputStream对象(来自ByteArrayInputStream)。然后我制作了一个jar文件,并从Jasper jrxml文件调用了该函数,如下所示:
(您还可以使用iReport GUI链接到代码,将新图像的“Image Expression”属性设置为“CDATA”之后的行)
对于更简单的Java编码需求,您可以write simple Groovy code在报告的XML中
注意,Jasper变量可以在Groovy中通过
$V{VariableName}
访问,SQL数据库列可以通过$F{ColumnName}
访问