当前位置: 首页 > 知识库问答 >
问题:

jasper报表pdf中未显示BLOB图像

江曦
2023-03-14

我已将图像保存在oracle数据库中为BLOB。我的模型类包含Byte[]图像;对应于数据库中的BLOB feild。我必须将数据库中的所有图像导出为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() );




    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格式的图像。

共有1个答案

童浩言
2023-03-14

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

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

  • java.lang.String
  • java.io.file
  • java.net.url
  • java.io.InputStream
  • java.awt.image
  • net.sf.jasperreports.engine.jrrenderable

将ImageObj中的getter更改为:

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

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

 类似资料:
  • 我的JSF2.0web应用程序旨在生成PDF报告。问题是在资源管理器窗口中没有显示PDF报告。我正在使用eclipse kepler,带有apache-tomcat-7.0.52,并且jasper Ireport的版本是4.8。 我将提供整个java类: 我可以在控制台看到消息,并且页面被刷新,但是没有PDF报告出现在explorer屏幕上 我已经用下面的代码替换了上面的PDF方法,但是徒劳的是,

  • 我对Jasper Sub报告有问题。我有一个报告模板,它有一个子报告;在主报表中,我有一些参数应该在子报表中也可用。

  • 这是我的主报告, 我的子报表 我的bean工厂类,bean被填充,但主报表类字段显示,但子报表列表不显示,请帮助,我已经长出了几缕白发,试图解决这个问题

  • 我使用XML用Java和Intellij IDE生成一个jasper报告,jasper版本是5.0.4。 在文件中有欧元符号,但是在pdf上创建报表时,我看到的是而不是 它是如何来的,我应该向文件添加什么来解决这个问题?