糾結兩天jasperReport生成html柱狀圖顯示圖片一直有問題,終於讓我找到了,方法如下:
在網上查找後發現需要設置下面四個參數:
1.JRHtmlExporterParameter.IMAGES_DIR_NAME
2.JRHtmlExporterParameter.IMAGES_URI
3.JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN
4.JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR
一開始是想結合Spring MVC的配置設置的,但是使用exporterParameters無法將上述參數設置到JasperReportHtmlView中,只好作罷。動手自己寫了一個。步驟如下:
1.獲得報表模板存放路徑。
String jasperFilePath = new StringBuilder(“WEB-INF/reports/”).append(jasperFileName).append(“.jasper”).toString();
2.獲得報表模板文件
File reportFile = getWebApplicationContext(request).getResource(jasperFilePath).getFile();
3.根據報表模板文件生成報表打印對象
JasperPrint print = JasperFillManager.fillReport(reportFile.getAbsolutePath(), model, dataSource.getConnection());
4.創建Html導出對象
JRHtmlExporter exporter = new JRHtmlExporter();
5.設置圖片文件存放路徑,此路徑爲服務器上的絕對路徑
String imageDIR = webContext.getResource(“reportFiles”).getFile().getAbsolutePath();
exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME, imageDIR);
6.設置圖片請求URI
String imageURI = request.getContextPath() + “/reportFiles/”;
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, imageURI);
7.設置導出圖片到圖片存放路徑
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);
8.設置導出對象
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
9.設置導出方法
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());
10.設置HTTP Head
response.setContentType(“text/html”);
11.執行導出
exporter.exportReport();
至此,自定義的導出方法完成了。 需要特別注意的是JRHtmlExporterParameter.IMAGES_DIR_NAME和JRHtmlExporterParameter.IMAGES_URI雖然執行的是相同的目錄,但是表達方式不一樣,IMAGES_DIR_NAME是文件系統的絕對路徑,而IMAGES_URI是http請求時的uri。