gpt4 book ai didi

java - JasperReports API。在报告 : net. sf.jasperreports.engine.JRException 中使用图像时出现错误:在以下位置找不到字节数据

转载 作者:行者123 更新时间:2023-12-01 10:06:07 24 4
gpt4 key购买 nike

我想通过 Java 打印 JasperReports 的报告。

所以我写了如下代码

 try {
String r ="C:\\ireport\\Foods.jrxml";
JasperReport jr =JasperCompileManager.compileReport(r);
JasperPrint jp = JasperFillManager.fillReport(jr, null, conn);
JasperViewer.viewReport(jp);
} catch(Exception e) {
System.out.println(e);
}

但是当我运行该程序时,出现以下错误。

net.sf.jasperreports.engine.JRException: Byte data not found at : flower1.png

我在 jasper 社区中搜索了此错误,但我无法理解他们解释解决方案的方式,因为我完全是编程新手。那么有人可以给我一个解决方案吗?

我的 jrxml 有以下代码片段

<imageExpression><![CDATA["flower1.png"]]></imageExpression>

最佳答案

使用报表参数传递图像的好方法。我相信,在您的情况下,将图像作为 BufferedImage 对象传递是一个不错的选择。

使用示例

Java 代码片段

Map<String, Object> parameters = new HashMap<>();
try (InputStream inputStream = YourClass.class.getClassLoader().getResourceAsStream("images/flower1.png")) {
parameters.put("flowerImage", ImageIO.read(new ByteArrayInputStream(JRLoader.loadBytes(inputStream))));
} catch (JRException | IOException e) {
throw new RuntimeException("Failed to load images", e);
}
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);

jrxml 文件的片段

<parameter name="logoImage" class="java.awt.Image"/>
...
<image scaleImage="FillFrame">
<reportElement x="10" y="0" width="224" height="43"/>
<imageExpression><![CDATA[$P{flowerImage}]]></imageExpression>
</image>
<小时/>
  1. 有关使用图像的更多信息,您可以找到here

  2. 有关使用 Java 读取资源以及存储位置的信息:

  3. 有关如何使用 Java 读取图像的信息:

关于java - JasperReports API。在报告 : net. sf.jasperreports.engine.JRException 中使用图像时出现错误:在以下位置找不到字节数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36457059/

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