我想为使用Jasper生成的每个报告添加免责声明页面。这将是一个包含静态文本的页面,并且对于每个报表都是相同的。但它需要生成为报告的最后一页或第一页。 有没有办法创造这样的解决方案?
答案 0 :(得分:5)
如果使用 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 中的设计是:
免责声明页面的设计是:
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();
}
结果将是( pdf 文件在 Adobe Reader 中打开):
备注:
的更多信息答案 1 :(得分:1)
您可以添加摘要带;它将显示在报告的末尾。如果要在iReport中布置报表,请右键单击报表检查器中的摘要带并将其添加到报表中,然后在报表检查器中单击报表名称以打开“属性”窗口。单击“在新页面上摘要”复选框。
如果你自己编码,看起来像是:
<jasperReport xmlns="..." isSummaryNewPage="true">
...
<summary>
<band height="50">
...
</band>
</summary>