gpt4 book ai didi

java - 如何在 Jasper 报告中提取和使用存档中的图像?

转载 作者:行者123 更新时间:2023-12-01 05:59:44 24 4
gpt4 key购买 nike

我需要将与数据库中的行匹配的图像放入 Jasper 报告中。我将图像数据保存在专有存档文件中,可以轻松地用 Java 代码提取这些数据。我需要知道如何将我的 Java 代码连接到 Jasper 报告以进行提取过程,类似于 BIRT 的 onRowSets() 方法。 (我需要有关填充过程如何工作的概述文档。)

如果我定义了 POJO/bean 数据源,我也将无法轻松使用数据库。我可以将必要的 Java 提取代码嵌入到 XML 中吗? 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>

new File()实际上是嵌入在 XML 中的 Java 代码吗?我愿意编写代码,但我似乎找不到任何完整的类代码示例(我想我想要类似扩展图像对象的东西)。

最佳答案

默认情况下,当前版本的 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 链接到您的代码 - 将新图像的“图像表达式”属性设置为“CDATA”之后的行)

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

请注意,可以在 Groovy 中使用 $V{VariableName} 访问 Jasper 变量,并且可以使用 $F{ColumnName} 访问 SQL 数据库列。

关于java - 如何在 Jasper 报告中提取和使用存档中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com