java - JRHtmlExporter 现已弃用。如何定义图片保存路径?

标签 java jasper-reports

JRHtmlExporter 类现已弃用(JasperReports 6.x)。

我用HtmlExporter替换了该类的用法。但我找不到等效的函数来替换 exporter.setParameter (JRHtmlExporterParameter.IMAGES_URI, imageURI);。我需要设置生成报告的图像存储路径(html 文件)。

我的旧代码:

JRHtmlExporter exporter = new JRHtmlExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, filedReport);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFileName);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);            
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.TRUE);

String imageURI = "q?srvAction=ReportImage&img="+returnFileName.substring(3).replace("/", "%2F")+"_files"+"%2F";
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,imageURI);

JasperReports 6.x 中用于定义图像路径的实际代码是什么?

最佳答案

正如我们从 javadoc 中看到的 JRHtmlExporterParameter.IMAGES_URI参数确实已被弃用,并且 HtmlExporterOutput.getImageHandler()应该使用方法来代替它。

定义图片存储路径

我们可以使用 HtmlResourceHandler 的实现接口(interface),例如 WebHtmlResourceHandler

使用示例:

JRExporter exporter = new HtmlExporter();

exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(out);
output.setImageHandler(new WebHtmlResourceHandler("/reports/image?image={0}"));
exporter.setExporterOutput(output);

exporter.exportReport();

定义导出时保存图像的位置

的帮助下FileHtmlResourceHandler 处理程序我们可以设置生成的 html

图像的路径

使用示例:

JRExporter exporter = new HtmlExporter();
// output file for generated html report
File file = new File(String.format("./out/%1$s_%2$s.html", report.getTemplateName(), new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())));

ExporterConfiguration configuration = new SimpleHtmlExporterConfiguration();
exporter.setConfiguration(configuration);

exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
SimpleHtmlExporterOutput exporterOutput = new SimpleHtmlExporterOutput(file);
// the folder for storing images. It will be subfolder with name starting like generated html and ended with postfix "_images"
File resourcesDir = new File(file.getParent(), file.getName() + "_images");
// argument ({0}) will be replaced with the real image name
String pathPattern = resourcesDir.getName() + "/{0}";

exporterOutput.setImageHandler(new FileHtmlResourceHandler(resourcesDir, pathPattern));
exporter.setExporterOutput(exporterOutput);
exporter.exportReport();

生成的文件和文件夹将如下所示:

 ..                                         [Folder]
    image-test_20170504232649.html          [File]
    image-test_20170504232649.html_images   [Folder]
        img_0_0_0.png                       [File]

注释:

使用HtmlResourceHandler的示例可以在 here 找到

关于java - JRHtmlExporter 现已弃用。如何定义图片保存路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763810/

相关文章:

java - Android 中选项卡的程序结构

java - Jasper 报告 : Document root element "jasperReport", 必须与 DOCTYPE 根 "null"匹配

tomcat - 有没有办法从 jasperserver 备份生成的 pdf 报告文件?

jasper-reports - 如何根据某些条件在 JasperReports 中手动插入分页符

java - 如何从 java 代码中检索报表变量,以检查报表是否没有页面?

java - 强制 android libgdx 进入沉浸模式

java - 我如何知道 Apache Camel 路由没有更多文件可供复制

java - 从 spring rest Controller 返回对象中的文件

java - 用于 DB2 和 Oracle 数据源的 flexypool

java - 通过从 JavaBean 传递值来生成报告及其子报告