Jasper reports jasper报告pdf中未显示水滴图像

Jasper reports jasper报告pdf中未显示水滴图像,jasper-reports,Jasper Reports,我已将图像以BLOB的形式保存在oracle数据库中。我的模型类包含byte[]image;与数据库中的BLOB字段相对应。我必须将数据库中的所有图像导出为PDF。在java中,我使用了以下代码: JasperReport jasperReport = JasperCompileManager.compileReport('jrxml file'); JRBeanCollectionDataSource ds = new JRBeanCollectionDataSou

我已将图像以BLOB的形式保存在oracle数据库中。我的模型类包含byte[]image;与数据库中的BLOB字段相对应。我必须将数据库中的所有图像导出为PDF。在java中,我使用了以下代码:




    JasperReport jasperReport = JasperCompileManager.compileReport('jrxml file');
       JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(imageObjList);  
       //imageObjList containing the model 'ImageObj' which contain  byte[] image 
       JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,jasperParameter,ds);
       JasperExportManager.exportReportToPdfStream(jasperPrint,responce.getOutputStream() );

我使用iReport创建jrxml文件

在我的jrxml中,我创建了一个字段作为映像,字段类类型为java.io.InputStream

在我的图像中,我给出了$F{Image}的图像表达式,也给出了java.awt.Image的图像类表达式

我无法制作我的pdf报告

我得到了一个例外




    net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression: 
       Source text : $F{image}
       ..... 
       Caused by: java.lang.ClassCastException: [B cannot be cast to java.io.InputStream
       at ImageReport_1374240048064_891215.evaluate(ImageReport_1374240048064_891215:171)


我需要pdf格式的图像。

错误消息[B无法转换为java.io.InputStream意味着字节数组[B]无法转换为InputStream。问题是jrxml文件中图像字段的类型与ImageObj bean中的字段类型不匹配

根据JasperReports Ultimate指南,您可以使用以下类型作为图像表达式的输入数据:

java.lang.String java.io.xml文件 java.net.URL 输入流 java.awt.Image net.sf.jasperreports.engine.jrrendeable 因此,您必须将字节[]转换为另一种数据类型。InputStream是最简单的方法:

将ImageObj中的getter更改为:

public InputStream getImage() {
    return new ByteArrayInputStream(image);
}

并将图像类表达式设置为java.io.InputStream。

错误消息[B不能转换为java.io.InputStream意味着字节数组[B不能转换为InputStream。问题是jrxml文件中图像字段的类型与ImageObj bean中的字段类型不匹配

根据JasperReports Ultimate指南,您可以使用以下类型作为图像表达式的输入数据:

java.lang.String java.io.xml文件 java.net.URL 输入流 java.awt.Image net.sf.jasperreports.engine.jrrendeable 因此,您必须将字节[]转换为另一种数据类型。InputStream是最简单的方法:

将ImageObj中的getter更改为:

public InputStream getImage() {
    return new ByteArrayInputStream(image);
}
并将图像类表达式设置为java.io.InputStream