java - Jasper 报告的附加页面

标签 java jasper-reports

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

最佳答案

如果使用 Java,您可以使用批处理模式导出。您可以设置 JasperPrint 的列表在JASPER_PRINT_LIST的帮助下从多个模板生成一份报告的参数。

您可以将带有免责声明的报告添加到您的所有报告中。您不需要修改 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 第一份报告的设计是:

enter image description here

免责声明页面的设计是:

enter image description here

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 文件):

enter image description here


注释:

关于 Batch Mode Export 的更多信息

关于java - Jasper 报告的附加页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376058/

相关文章:

jasper-reports - 使用 PDF 导出器渲染文本时忽略 isStretchWithOverflow 属性值

java - jasper 使用 applet 和 servlet 打印 loadObject

java - Android MapView方向箭头

java - 在 JBoss 7.1 上运行 Rest 项目时出错

java - 使用 android 软键盘更改键入的字符

java - Jasper Report 找不到类路径

java - 扫描嵌入式 Tomcat 中的 list 类路径 jar

java - Android Wear Watch Face获取手机电量百分比

jasper-reports - 如何在我的表格底部添加一行?

java - 打印jasper文件时执行报告的SQL语句出错