实际开发中,解决iReport中打印图片不显示问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30546099/article/details/83061469

ireport  中增加图片,添加上属性,但是运行时报错如下,是属性logoPath没有声明到map中

1. Parameter not found : logoPath

net.sf.jasperreports.engine.design.JRValidationException: Report design not valid :

      1. Parameter not found : logoPath

     at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:280)

     at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:152)

     at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:357)

     at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:343)

     at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:608)

     at com.guorenpcic.grecar.util.PrintUtil.printReportPdfMore(PrintUtil.java:90)

     at com.guorenpcic.grecar.services.core.impl.PrintServiceImpl.transcriptPrintNew(PrintServiceImpl.java:418)

     at com.guorenpcic.grecar.rest.core.PrintController.transcriptPrintNew(PrintController.java:135)

     at com.guorenpcic.grecar.rest.core.PrintController$$FastClassBySpringCGLIB$$37fde7a.invoke(<generated>)

     at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:747)

解决办法:(1)添加图片属性以流的方式传给map

  //打印模板地址
                      inputStream = classLoader.getResourceAsStream("template/policy0507tdfb.jrxml");
                      InputStream url = classLoader.getResourceAsStream("photo/top.png");
                      paramMap.put("logoPath",url);
                      paramMap.put("templetPath", inputStream);
                      paramMap.putAll((HashMap)getOffParamsC(printrespvo));
                 listMap.add(paramMap);
                 PrintUtil.printReportPdfMore(listMap,1,response);

并且在模板中缺少配置,打开policy0507tdfb.jrxml文件,添加

<parameter name="logoPath" class="java.io.InputStream" isForPrompting="false"/>

即完成。

猜你喜欢

转载自blog.csdn.net/qq_30546099/article/details/83061469
今日推荐