【发布时间】:2015-08-14 19:05:19
【问题描述】:
使用 Jsperreports 6.1.0 依赖项开发了一个简单的 Spring Maven Web 应用程序。创建了一个包含静态文本和图表的 Jasper 报告。以 PDF 格式导出报表时,可以正确打印带有静态文本和图表的报表,但导出为 HTML 格式时,仅显示静态文本而不显示图表。
在网上搜索后发现需要ImageServlet和几个参数来导出HTML格式的报告。
在 web.xml 中添加 ImageServlet 映射
通过 WebHtmlResourceHandler 设置 Image URI。
仍然报告不显示图表。有什么问题?
这是我的 Spring Controller 代码,用于以 HTML 格式导出报告。
List<BeanAuthorBooks> beanList = new ArrayList<BeanAuthorBooks>();
beanList.add(new BeanAuthorBooks("APJ Kalam",10));
beanList.add(new BeanAuthorBooks("Robin Shamra",5));
beanList.add(new BeanAuthorBooks("Rashmi Bansal",8));
beanList.add(new BeanAuthorBooks("Dr. B.R.Ambedkar",60));
beanList.add(new BeanAuthorBooks("Mahatma Gandhi",15));
Map<String,Object> params = new HashMap();
JasperReport jasperReport = JasperCompileManager.compileReport(this.getClass().getResourceAsStream("testreport.jrxml"));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JRBeanCollectionDataSource(beanList,false));
HtmlExporter exporter = new HtmlExporter();
List<JasperPrint> jasperPrintsList = new ArrayList<JasperPrint>();
jasperPrintsList.add(jasperPrint);
exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintsList));
//set ImageHandler. Hack for images export to HTML
SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(response.getWriter());
WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler("image?image={0}");
output.setImageHandler(webHtmlResourceHandler);
exporter.setExporterOutput(output);
SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();
这是我的 web.xml:
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>
工作环境:Jasperreports 6.1.0、Spring 4.1.1、Eclipse Luna
注意:我在不同的论坛上发现了许多具有相同问题的链接,但现在提供的解决方案似乎已被弃用。
【问题讨论】: