【问题标题】:Additional page for Jasper reportsJasper 报告的附加页面
【发布时间】:2013-12-05 03:34:30
【问题描述】:

我想为使用 Jasper 生成的每个报告添加一个免责声明页面。这将是一个带有静态文本的页面,并且对于每个报告都是相同的。但它需要作为报告的最后一页或第一页生成。 有没有办法创建这样的解决方案?

【问题讨论】:

  • 您是否使用 Java 代码来构建报告?

标签: java jasper-reports


【解决方案1】:

如果使用 Java,您可以使用 Batch Mode Export。您可以通过JASPER_PRINT_LIST参数设置JasperPrint列表,从多个模板生成一份报告。

您可以在所有报告中添加带有免责声明的报告。您不需要修改 jrxml 文件。

样本

例如,我们有报告 (singleReport1.jrxml) 和免责声明 (disclaimer.jrxml)。

报告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="singleReport1" language="groovy" pageWidth="297" pageHeight="421" whenNoDataType="AllSectionsNoDetail" columnWidth="257" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <title>
        <band height="175" splitType="Stretch">
            <staticText>
                <reportElement x="8" y="46" width="241" height="83"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="14"/>
                </textElement>
                <text><![CDATA[The First Report]]></text>
            </staticText>
        </band>
    </title>
</jasperReport>

免责声明代码为:

<?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="disclaimer" language="groovy" pageWidth="297" pageHeight="421" whenNoDataType="AllSectionsNoDetail" columnWidth="257" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <title>
        <band height="175" splitType="Stretch">
            <staticText>
                <reportElement x="8" y="46" width="241" height="83"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="14"/>
                </textElement>
                <text><![CDATA[The disclaimer]]></text>
            </staticText>
        </band>
    </title>
</jasperReport>

iReport 中第一个报告的设计是:

免责声明页面的设计是:

Java 代码:

public static void testReport() throws JRException {
    JasperReport jasperReport1 = JasperCompileManager.compileReport(reportSourceReport1);
    JasperReport jasperDisclaimer = JasperCompileManager.compileReport(reportSourceDisclaimer);
    JasperPrint jasperPrintReport1 = JasperFillManager.fillReport(jasperReport1, null, new JREmptyDataSource());
    JasperPrint jasperPrintDisclaimer = JasperFillManager.fillReport(jasperDisclaimer, null, new JREmptyDataSource());
    List<JasperPrint> jasperPrints = Lists.newArrayList();
    jasperPrints.addAll(Arrays.asList(jasperPrintReport1, jasperPrintDisclaimer));

    JRPdfExporter exporter = new JRPdfExporter();
    exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrints);
    exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, fileName);
    exporter.exportReport();
}

结果将是(在 Adobe Reader 中打开的 pdf 文件):


注意事项:

更多关于Batch Mode Export的信息

【讨论】:

  • 感谢您的回答。我接受了另一个,因为它很简单,可以满足我的需要。为您的回答 +1。
  • +1 也是 Alex 的回答。我希望我能用 iReport/JasperReports Server 做到这一点。
【解决方案2】:

您可以添加摘要带;它将显示在报告的末尾。如果您在 iReport 中布置报告,请右键单击报告检查器中的摘要带并将其添加到您的报告中,然后单击报告检查器中的报告名称以打开“属性”窗口。单击“新页面上的摘要”复选框。

如果你自己编写代码,它看起来像:

<jasperReport xmlns="..." isSummaryNewPage="true">
 ...
 <summary>
    <band height="50">
        ...
    </band>
 </summary>

【讨论】:

  • 我将其标记为答案,因为它足够简单并且对我有用。虽然,任何寻找此问题解决方案的人都应该查看 Alex K 的解决方案。谢谢
猜你喜欢
  • 2011-03-29
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多