jasperreport高度乐队内容依赖

时间:2012-06-27 07:07:18

标签: jasper-reports

如何让报表引擎调整波段高度以适应内容占用的实际空间?

如果您使用“pageHeader”部分,您可以在此论坛中找到回复。 http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=83728

但是在“columnFooter”或“pageFooter”中不起作用。

我想在第一页底部显示信息,而不是在以下页面中保留空格。

有没有解决方案?

1 个答案:

答案 0 :(得分:0)

里卡多·马里亚卡。这段代码是解决方案,感谢里卡多和动态报告

    private void build() {
    try {
        JasperPdfExporterBuilder pdfExporterBuilder = export
                .pdfExporter(PDF_FILE);
        JasperReportBuilder jasperReportBuilderMain = report()
                .columns(
                        col.column("Item", "item", type.stringType()),
                        col.column("Quantity", "quantity",
                                type.integerType()),
                        col.column("Unit price", "unitprice",
                                type.bigDecimalType()))
                .setDataSource(createSubreportDataSource())
                // .detail(cmp.subreport(createSubreport()))
                .setWhenNoDataType(WhenNoDataType.ALL_SECTIONS_NO_DETAIL);

        JasperReportBuilder jasperReportBuilderDisclaimer = report()
                .setPageFormat(PageType.A4, PageOrientation.LANDSCAPE)
                .summary(cmp.subreport(jasperReportBuilderMain))
                .summaryWithPageHeaderAndFooter()
                .setWhenNoDataType(WhenNoDataType.ALL_SECTIONS_NO_DETAIL)
                .columnHeader(
                        cmp.text("first page header").setFixedHeight(50))
                .columnFooter(
                        cmp.text(DISCLAIMER).setStretchWithOverflow(true)
                                .setFixedHeight(250))
                .pageHeader(
                        Templates
                                .createTitleComponent("Ricardo Mariaca Approach"))
                .pageFooter(Templates.footerComponent).show()
                .toPdf(pdfExporterBuilder);

    } catch (DRException e) {
        e.printStackTrace();
    }
}

private JRDataSource createSubreportDataSource() {
    DRDataSource dataSource = new DRDataSource("item", "quantity",
            "unitprice");
    for (int i = 0; i < 180; i++) {
        dataSource.add("Book", (int) (Math.random() * 10) + 1,
                new BigDecimal(Math.random() * 100 + 1));
    }
    return dataSource;
}

}