JasperReport API:由于html组件,createReport返回null

时间:2013-05-17 09:47:46

标签: java parameters jasper-reports ireport

我遇到了 JasperReports API 的问题。

我将 html 组件添加到我的报告中(通过 iReport designer 5.0.4 )。编译到 jasper 文件运行没有错误。

当我尝试创建报告时,我从 JasperPrint对象获取 null (方法 createReport(getReportAsByteArray(), parameters, dataSource); 返回 null ,而不是 JasperPrint 对象。

getReportAsByteArray() - 从我的数据库中返回jasper报告文件。)

Html 组件(在 iReport 中)与字符串参数连接,我将正确的字符串参数放入parameters HashMap<>。我已经尝试在html内容exp中编写html文本。 (html组件属性)。 它不起作用。

之前一切都很好,当jasper文件没有 html 组件时,我可以创建我的报告并导出为PDF。

现在,我可以在 iReport 预览中看到生成的报告(带有 html 组件)(并且可以正常工作),但是当我通过我的java bean填充报告时 - 它不起作用。 (只有一个对象的jasper文件 - html 组件 - 也不起作用)。

jrxml文件:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="raport_test_1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5a918503-735f-4812-bbd1-f4017cca4b0f">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="TEXT_CONTENT" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch">
            <componentElement>
                <reportElement uuid="e9907391-3e2f-45c9-af15-b7a60f7a3312" x="0" y="0" width="555" height="125"/>
                <hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" xsi:schemaLocation="http://jasperreports.sourceforge.net/htmlcomponent http://jasperreports.sourceforge.net/xsd/htmlcomponent.xsd" scaleType="RealSize" horizontalAlign="Left" verticalAlign="Middle">
                    <hc:htmlContentExpression><![CDATA[$P{TEXT_CONTENT}]]></hc:htmlContentExpression>
                </hc:html>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

该方法应该返回报告pdf文件的字节数组

    Map<String, Object> parameters = new HashMap<>();
    parameters.put("TEXT_CONTENT","sample text<br/>");
    List<Data> list= getList();
    if (list == null) {
        list = new ArrayList<>();
    }
    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);

    JasperPrint printableReport = createReport(getReportFileAsByteArray(), parameters, dataSource);

    if (printableReport != null) {
        try {
            return JasperExportManager.exportReportToPdf(printableReport);
        } catch (JRException ex) {
            //
        }
    }
    return null;

感谢您的任何建议!

0 个答案:

没有答案