需要在你的web.xml中配置image生成器
- <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>
然后你的Export中设置如下:
- public void export(HttpServletRequest request,
- HttpServletResponse response, String reportFilePath, Map params,
- JRDataSource dataSource) {
- try {
- PrintWriter out = response.getWriter();
- try {
- response.setContentType("text/html;charset=UTF-8");
- JasperPrint jasperPrint = new JasperPrintWithDataSource(
- reportFilePath, params, dataSource).getJasperPrint();
- // 使用JRHtmlExproter导出Html格式
- JRHtmlExporter exporter = new JRHtmlExporter();
- request.getSession().setAttribute(
- ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
- jasperPrint);
- exporter.setParameter(JRExporterParameter.JASPER_PRINT,
- jasperPrint);
- exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
- exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
- [color=red]"./image?image="[/color]);
- exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
- "UTF-8");
- exporter.setParameter(
- JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");
- exporter
- .setParameter(
- JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
- Boolean.TRUE);
-
- // 导出
- exporter.exportReport();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (out != null) {
- try {
- out.close();
- } catch (Exception e) {
- }
- }
- }
- } catch (IOException ioe) {
- ioe.printStackTrace();
- }
- }
|