图像未加载到JasperReport模板中以发送电子邮件

时间:2019-10-17 23:15:41

标签: java html jasper-reports

使用JasperReport模板生成电子邮件内容时遇到问题。 我需要将内容放置在带边框的内容内并有图像like this 但是在我生成加载了内容的模板后,它在gmail或zimbra邮件中看起来不是这样的: This is the result 如您所见,结果看起来不像JasperSoft Studio中的预览。

我想知道是否有一种方法可以确保图像正确加载并且边框包含模板的其余部分

图片的碧玉块:

<image scaleImage="RealSize" hAlign="Center" vAlign="Middle" isLazy="true">
    <reportElement x="160" y="50" width="240" height="130" isRemoveLineWhenBlank="true" uuid="e72e685c-99f5-4dff-9174-2e25cab4a899"/>
    <graphicElement fill="Solid"/>
    <imageExpression><![CDATA["(https://domain/fe-standalone/files/resource/image.png)"]]></imageExpression>
</image>

用于生成模板的Java代码:

    protected void exportToHTML(String jasperPath, ExportParams params, Connection connection, ByteArrayOutputStream baos) throws SQLException, JRException {
        try {
            Map<String, Object> parameters = new HashMap<>();
            parameters.putAll(params.getParameters());
            JasperPrint jasperPrint = fillReport(getClass().getResourceAsStream(jasperPath), parameters, connection);

            SimpleHtmlExporterOutput oseo = new SimpleHtmlExporterOutput(baos);

            HtmlExporter exporter = new HtmlExporter();
            exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
            exporter.setExporterOutput(oseo);
            exporter.setConfiguration(new SimpleHtmlExporterConfiguration());
            exporter.exportReport();
            connection.close();
        } catch (JRException e) {
            connection.close();
            throw new JRException(e);
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是将isUseBackgroundImageToAlign导出标志设置为false。如

SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
configuration.setUseBackgroundImageToAlign(false);
exporter.setConfiguration(configuration);

您还可以通过net.sf.jasperreports.export.html.use.background.image.to.align配置属性来设置标志。

但是请注意,这可能会导致图像不再根据scaleImage,hAlign和vAlign属性对齐,因此您需要将JRXML图像元素尺寸设置为想要图像具有的尺寸。 / p>