Java 如何将页码添加到表格标题?

Java 如何将页码添加到表格标题?,java,itext,Java,Itext,我已经创建了一个PdfPTable(带有标题),它被拆分为多个页面。我在模拟模式下使用ColumnText添加表格,并计算表格显示的页数。现在,我正在寻找为每个标题添加x/n计数器的最佳方法 我的标题行是“关于资料的表格”。我计算,这个表被分成3页。生成的标题应如下所示: 第一页的“材料表1/3”, 第二页的“材料表2/3”, 第三页的“关于材料的表3/3” 最好的方法是什么?有可能吗?最好的方法是使用单元格事件 我没有现成的示例,但您可以结合以下示例自己编写一个示例: 在这个例子中,我解决了“

我已经创建了一个PdfPTable(带有标题),它被拆分为多个页面。我在模拟模式下使用ColumnText添加表格,并计算表格显示的页数。现在,我正在寻找为每个标题添加x/n计数器的最佳方法

我的标题行是“关于资料的表格”。我计算,这个表被分成3页。生成的标题应如下所示: 第一页的“材料表1/3”, 第二页的“材料表2/3”, 第三页的“关于材料的表3/3”


最好的方法是什么?有可能吗?

最好的方法是使用单元格事件

我没有现成的示例,但您可以结合以下示例自己编写一个示例:

在这个例子中,我解决了“第X页,共Y页”的问题。您总是知道X的值,但只要您还在创建文档,您就不知道Y的值(即总页数)。在你的情况下,你也有类似的问题。您要添加“Y的X部分”

您可以通过添加一个空单元格来实现这一点,为该空单元格创建一个自定义的
PdfPCellEvent
。通过在iText官方网站上查找关键字,您可以找到几个单元格事件的示例

让我们来看一个示例,其中我们使用了一个名为
PressPreview
的自定义
PdfPCellEvent

class PressPreview implements PdfPCellEvent {

    public BaseFont bf;

    public PressPreview() throws DocumentException, IOException {
        bf = BaseFont.createFont();
    }

    public void cellLayout(PdfPCell cell, Rectangle rect,
            PdfContentByte[] canvas) {
        PdfContentByte cb = canvas[PdfPTable.TEXTCANVAS];
        cb.beginText();
        cb.setFontAndSize(bf, 12);
        cb.showTextAligned(Element.ALIGN_RIGHT, "PRESS PREVIEW",
            rect.getRight() - 3, rect.getBottom() + 4.5f, 0);
        cb.endText();
    }
}
在本例中,文本“PRESS PREVIEW”将添加到您添加此事件的所有单元格中,如下所示:

PdfPCellEvent press = new PressPreview();
PdfPCell cell = new PdfPCell();
cell.setCellEvent(press);
在本例中,您需要向自定义事件添加两个成员变量。一个
PdfTemplate
,您将在其中写入Y的值。一个
int
跟踪事件被触发的次数。这就是X。将完整的表格添加到文档中后,Y将等于X,您可以在
PdfTemplate
上填写此值


总结:你想要的不是不可能的,但也不是微不足道的。

细胞事件成功了。不过,我没有使用PDFP模板。我保留了对事件的引用,并在以后设置了总页数。这让我可以根据这个数字做出决定,也就是说,如果表格放在一页上,我不想加1/1。太好了,很高兴我的回答帮助了你,感谢你接受它!