0

我对JasperReports API有疑问。

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

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

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

Html组件(在iReport)与字符串参数连接,我将正确的字符串参数放入parametersHashMap<>。我已经尝试在 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;

感谢您的任何建议!

4

0 回答 0