有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    默认情况下,当前版本的iReport(3.6.0)使用Groovy(一种Java脚本语言),它可以完全访问类路径中的任何Java库

    我所要做的就是编写一些代码,从存档中提取图像并返回一个InputStream对象(来自ByteArrayInputStream)。然后我制作了一个jar文件,并从Jasper jrxml文件调用了该函数,如下所示:

    <imageExpression class="java.io.InputStream">
       <![CDATA[
    com.mycompany.jasper.MyImageExtractor.getImage($F{IMAGE_URL}, $V{JasperVariable})
       ]]>
    </imageExpression>
    

    (您还可以使用iReport GUI链接到代码,将新图像的“Image Expression”属性设置为“CDATA”之后的行)

    对于更简单的Java编码需求,您可以write simple Groovy code在报告的XML中

    注意,Jasper变量可以在Groovy中通过$V{VariableName}访问,SQL数据库列可以通过$F{ColumnName}访问