gpt4 book ai didi

html - 如何强制 jasper 报告中的图像 url 导出为 HTML?

转载 作者:可可西里 更新时间:2023-11-01 12:52:24 25 4
gpt4 key购买 nike

报表使用网络服务器上的图像(但不一定是应用程序的网络服务器)。报表有一个图像元素表达式如下:

"http://www.example.de/images/" + $F{picture}

当我使用 JRXhtmlExporter 将报告导出为 HTML 并在浏览器中显示生成的 HTML 时,图像不可见。当我用 Firebug 检查 img 标签时,src 参数与表达式不同,而是一些生成的文件夹和生成的文件名。如果通过 JasperExportManager.exportReportToPdfStream() 将报告导出为 PDF,则图像会在生成的 PDF 文件中正确显示。

我将 JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR 设置为 Boolean.FALSE,但没有帮助。

如何在导出时强制图片 url 保持不变?

注意:“懒惰”option iReport 做我想做的事。

最佳答案

关键是将 isLazy 属性设置为 true(如 this answer 中的@ThomasKessler 所示)。这对我有用,可以完美地生成三份报告(PDF、XLS、HTML)。

我做了以下事情:

.jrxml

...
<parameter name="LOGO_URL" class="java.lang.String" isForPrompting="false"/>
...
<image isLazy="true">
<reportElement uuid="24062838-1ede-4578-acdf-9a63662ea738" x="0" y="0" width="108" height="30"/>
<imageExpression><![CDATA[$P{LOGO_URL}]]></imageExpression>
</image>
...

在我配置的.properties 文件中(针对每个环境):

my.logo.url=http://localhost:8080/MySite/img/my_logo.jpg

Servlet 中,我有 3 个方法:generatePDFReport、generateXLSReportgenerateHTMLreport。在最后一个中,我有:

            Properties prop = Configurator.getProperties(BUNDLENAME);
Connection con = ReportsDB.getConnection();
String reportPathTag = prop.getProperty(Report.JASPERURL);

Map parameters = Report.extractJasperParams(request.getParameterMap());
String jasperPath = parameters.containsKey(reportPathTag) ? (String) parameters.get(reportPathTag) : "";
String reportName = parameters.containsKey(Report.JASPERTITLE) ? (String) parameters.get(Report.JASPERTITLE) : "myReport";

String path = getServletContext().getRealPath("/");
path += jasperPath;

JasperReport jasperReport = null;
JasperDesign jasperDesign = null;
jasperDesign = JRXmlLoader.load(path);

logFilteringCard(parameters);

jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters, con);
JRHtmlExporter htmlExporter = new JRHtmlExporter();
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, pw);
htmlExporter.exportReport();
con.close();

在行中:

Map parameters = Report.extractJasperParams(request.getParameterMap());

我设置了报告的所有参数,包括LOGO_URL,设置属性值。

在我的例子中,我使用这种通用方法来生成我需要的所有报告。 Report.extractJasperParams 方法使用请求 的映射来反射(reflect)应生成哪个报告并相应地设置参数,但您可以根据您的特定需求对其进行简化。 p>

Configurator.getPoperties() 方法用于简化Properties 文件(在我的例子中是一个包含一些加密值的文件)的加载。

关于html - 如何强制 jasper 报告中的图像 url 导出为 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com