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