4

私はJasperReportBuilderを使用しており、レポートをPDFにエクスポートしています。レポートのコンテンツ全体はMultiPageListBuilderHorizo ​​ntalListBuilder 、VerticalListBuilderによって生成されます。データはさまざまなデータ ソースから取得されるため、データ ソースを渡したくありません。ページフッターとページヘッダーを利用して、各ページの静的ページヘッダーとフッター、およびページ番号に追加したいと考えています。addDetail(componentBuilder)メソッドを使用して *Detail& バンドにMultiPageListBuilderを追加 しようとすると (このMultiPageListBuilderには複数のページ データが含まれているため)、空白のレポートが生成されます。MultiPageListBuilderを追加するとタイトルまたはサマリーバンドでは、レポートは完全に生成されますが、ページヘッダーおよびページ フッターバンドは表示されません。

コード スニペットの例は次のとおりです。

JasperReportBuilder rpt = net.sf.dynamicreports.report.builder.DynamicReports.report();
MultiPageListBuilder multiPageList = cmp.multiPageList();
HorizontalListBuilder hrbld = cmp.horizontalList();

try {    
    rpt.addTitle(cmp.text("REPORT TITLE"));
    rpt.addTitle(cmp.text("--------------"));

    rpt.addPageHeader(cmp.pageXofY());

    for (int i = 0; i < 200; i++) {
        hrbld = cmp.horizontalList();
        hrbld.add(cmp.text("ABC " + i)).newRow();
        multiPageList.add(hrbld);
    }

    rpt.addDetail(multiPageList);

    rpt.summaryOnANewPage();
    rpt.addSummary(cmp.text("REPORT SUMMARY"));

    JasperPdfExporterBuilder pdfExporter = Exporters.pdfExporter("report.pdf");
    rpt.toPdf(pdfExporter);
    File file = new File("report.pdf");

    response.setContentType("application/pdf");

    return SUCCESS;
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return ERROR;
    }

しかし、これは機能していません。空白のレポートを生成します。rpt.addTitle(multiPageList);レポートの代わりに使用するとrpt.addDetail(multiPageList);生成されますが、各ページにページ ヘッダーが表示されません。

助けてください。前もって感謝します。

4

1 に答える 1

6

ページ ヘッダーとページ フッターは詳細バンドでのみ使用できるという解決策を見つけました。詳細バンドを使用するには、レポートに添付されたデータ ソースが必要です。したがって、空のデータ ソースをレポートに設定し、データを配置できる詳細バンドを取得し、ページ ヘッダーとフッターを使用することもできます。空のデータ ソースは、次のように設定できrpt.setDataSource(new JREmptyDataSource());ますrpt.addDetail(multiPageList);。皆さんありがとう。

于 2013-05-23T11:56:54.777 に答える