简体   繁体   English

Getting.net.sf.jasperreports.engine.JREException:当传递 java.awt.Image 作为参数时,在位置找不到字节数据

[英]Getting net.sf.jasperreports.engine.JRException: Byte data not found at location when pass java.awt.Image as parameter

I get the exception above when I try to display an image chosen from JFileChooser for passing to JasperReports report, can anyone please help me to figure out it?当我尝试显示从JFileChooser选择的图像以传递给JasperReports报告时出现上述异常,有人可以帮我弄清楚吗?

The steps I followed are:我遵循的步骤是:

  1. added a parameter named photo via report inspector and set its parameter class to Object通过报告检查器添加了一个名为 photo 的参数,并将其参数 class 设置为 Object
  2. dragged and dropped an image from the palette and gave its expression class as java.awt.Image and Image Expression to $P{photo}从调色板中拖放图像并将其表达式 class 作为java.awt.Image并将图像表达式赋给$P{photo}

This is the image element in.jrxml file这是.jrxml文件中的图像元素

<image>
   <reportElement x="315" y="0" width="195" height="77" uuid="59390988-25fc-4d62-80c4-bc19b80b0fa0"/>
   <imageExpression><![CDATA[$P{photo}]]></imageExpression>
</image>

These are the code examples i referred and used to generate the report.这些是我参考并用于生成报告的代码示例。

Image photo;
JFileChooser fc = new JFileChooser();

private void getPicture() {
    fc.setFileFilter(new FileNameExtensionFilter("Images", "jpg", "gif", "bmp"));
    if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
        fc.setCurrentDirectory(fc.getCurrentDirectory());

        ImageIcon icon = new ImageIcon(fc.getSelectedFile().getAbsolutePath());
        icon = new ImageIcon(icon.getImage().getScaledInstance(350, 350, Image.SCALE_DEFAULT));
        photo = icon.getImage();
    }

    if (photo == null) {
        System.out.println("null");
    }

    System.out.println("path= " + fc.getSelectedFile().getAbsolutePath());
    Map<String, Object> param = new HashMap<String, Object>();
    param.put("photo", photo);

    generateReports(param);
}


private void generateReports(Map param) {
    try {

        String source = "C:\\newReport.jrxml";

        if (new File(source).exists() == false) {
            System.out.println("Please  report Source does not exist");
            return;
        }

        JasperReport jasperReport = JasperCompileManager.compileReport(source);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, new JREmptyDataSource());
        JasperViewer.viewReport(jasperPrint, false);
    } catch (Exception e) {
        System.out.println("reports Error " + e.toString());
    }
}

go to your xml and do this, the location of my image is as seen below it works for me thanks 转到您的xml并执行此操作,图像的位置如下所示,对我有用

imageExpression>![CDATA["src\\Forms\\leaf_banner_gray.png imageExpression>![CDATA [“ src \\ Forms \\ leaf_banner_gray.png

The below line of code working fine when I do preview of the PDF from JasperStudio but not while creating PDF from Java.当我从 JasperStudio 预览 PDF 但从 Java 创建 PDF 时,下面的代码行工作正常。

<imageExpression>![CDATA["src\Forms\leaf_banner_gray.png"]]</imageExpression>

Finally, we found the solution.最后,我们找到了解决方案。

//declared a property leafBanner of type InputStream
<parameter name="leafBanner" class="java.io.InputStream"/>
//leafBanner property has been used below
<imageExpression>![CDATA[$P{leafBanner}]]</imageExpression>

Below is the code to pass image as stream from Java.下面是从 Java 传递图像为 stream 的代码。

Map<String, Object> params = new HashMap<>();
File leafBanner= ResourceUtils.getFile("src//main//resources//images//leafBanner.PNG");
FileInputStream leafBannerStream = new FileInputStream(leafBanner);
params.put("leafBanner", leafBannerStream);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 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 net.sf.jasperreports.engine.JRException:找不到字节数据 - net.sf.jasperreports.engine.JRException: Byte data not found 找不到例外档案-net.sf.jasperreports.engine.JRException - exception file not found - net.sf.jasperreports.engine.JRException JasperReport:net.sf.jasperreports.engine.JRException - JasperReport : net.sf.jasperreports.engine.JRException java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRException - java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRException net.sf.jasperreports.engine.JRException:java.io.IOException:字节数组不是可识别的图像格式 - net.sf.jasperreports.engine.JRException: java.io.IOException: The byte array is not a recognized imageformat 显示数据库中的图像。 获取 net.sf.jasperreports.engine.JRException:图像读取失败 - Show image from database. Getting net.sf.jasperreports.engine.JRException: Image read failed "net.sf.jasperreports.engine.JRException:无效的页面索引范围:0 - -1 of 0" - net.sf.jasperreports.engine.JRException: Invalid page index range : 0 - -1 of 0 net.sf.jasperreports.engine.JRException:编译报告java源文件时出错 - net.sf.jasperreports.engine.JRException: Error compiling report java source files JasperReports-net.sf.jasperreports.engine.JRException:从bean检索字段值时出错 - JasperReports - net.sf.jasperreports.engine.JRException: Error retrieving field value from bean
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM