簡體   English   中英

JasperReports API。 在報告中使用圖像時出現錯誤:net.sf.jasperreports.engine.JRException:在以下位置找不到字節數據

[英]JasperReports API. Getting error when using Image in report: net.sf.jasperreports.engine.JRException: Byte data not found at

我想通過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. 您可以在這里找到有關使用圖像的更多信息

  2. 有關使用Java讀取資源及其存儲位置的信息:

  3. 有關如何使用Java讀取圖像的信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM