0

一番右の列が複数の行にまたがるテーブルを作成しようとしています

私はこれを達成しますcell.setRowspan(numOfRows);

ページの最後にいくつかの列の値の合計を表示する必要があります。そのために、ページ イベントを作成し、それらのイベントが発生したときに現在の合計値をフッターに出力します。ページの最後で正しい合計を取得するために、各行の後に次のコード ブロックを呼び出します。

table.addCell(...)
....
document.add(table);
table.deleteBodyRows();
....

このようにして、ページの終わりに到達するとイベントが発生し、正しい合計値をフッターに書き込むことができます。

table.deleteBodyRows()問題は、行スパン内で 呼び出すと、コードがjava.lang.ArrayIndexOutOfBoundsException: -1

この問題の解決策が見つかりませんでした。私が見逃したものはありますか、それともこの要件を達成する他の方法はありますか???


コード ブロックの例を次に示します (SSCCE よりも大きいものもあります)。

public static void main(String[] args) throws Exception {
    int totalSum = 0;
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("c:/sample.pdf"));
    document.open();

    PdfPTable table = new PdfPTable(3);
    table.setWidths(new int[]{1,1,1});
    table.setTotalWidth(document.right() - document.left());
    table.setLockedWidth(true);
    for (int j = 0; j < 10; j++) {
        table.getDefaultCell().setRowspan(20);
        table.addCell(new Phrase("Spanning Row : "+j));
        table.getDefaultCell().setRowspan(1);
        for (int i = 0; i < 20; i++) {
            table.addCell(new Phrase("Row Num : "+i));  
            table.addCell(new Phrase("Blah blah..."));
            document.add(table);
            table.deleteBodyRows();
            totalSum += i;  // if the page break occures i'll write current totalSum to the footer
        }
    }
    document.add(table);

    document.close();
}

ページの終わりを理解するために、各行の後にテーブルの内容を書きたいだけです...

4

0 に答える 0