Jasper报告的附加页面

ele*_*tor 2 java jasper-reports

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

Ale*_*x K 5

如果使用Java,您可以使用批处理模式导出.您可以借助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>
Run Code Online (Sandbox Code Playgroud)

免责声明代码是:

<?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>
Run Code Online (Sandbox Code Playgroud)

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();
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述


备注:

有关Batch Mode Export的更多信息