在 Itext 中获取页码

Get page number in Itext

我正在尝试使用 Itext.where 生成 pdf 我需要使用 header 构建 table。但是我通过迭代列表并将单元格添加到 Table 动态添加页面上的所有内容,最后在交互完成后将 table 添加到文档。 document.add(table);

如果我的内容移到下一页,我的作者和文档不会显示更新的页码,直到 table 内容添加到 document.I 需要迭代和构建动态的table下一页开头应该有table.I的header 已经尽力了approaches.But,我不知道什么时候的内容在迭代中间移动到下一页 process.PDFWriter 在输入 loop.I 之前向我显示页码 需要在 tables 内容继续时获取更新的页码下一个 page.And 我不需要这个 header 在所有 pages.I 上只需要它直到 table 内容带有 [​​=23=] 让我知道哪个是最好的方法处理这种情况。谢谢

这个问题的另一个答案不是真正的答案,它引用了另一个问题的答案。如果这实际上是当前问题的答案,则当前问题应该被标记为重复。

话虽如此,我认为答案并不完全正确。我写了一个例子,产生这样的东西:

如你所见,第一页没有header,第二页和第三页只有一个header,上面写着"Table XYZ (Continued)"。我什至添加了一个页脚 "Continue on next page"。如您所见,此页脚仅在 table 拆分时出现。它不在最后一页上。这在问题中没有被问到,很容易从我的代码中删除。

您可以在此处找到完整的代码示例:SimpleTable5

这些是相关部分:

PdfPTable table = new PdfPTable(5);
table.setWidthPercentage(100);
PdfPCell cell = new PdfPCell(new Phrase("Table XYZ (Continued)"));
cell.setColspan(5);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Continue on next page"));
cell.setColspan(5);
table.addCell(cell);
table.setHeaderRows(2);
table.setFooterRows(1);
table.setSkipFirstHeader(true);
table.setSkipLastFooter(true);
for (int i = 0; i < 350; i++) {
    table.addCell(String.valueOf(i+1));
}
document.add(table);

如果你只想要一个 header:

PdfPTable table = new PdfPTable(5);
table.setWidthPercentage(100);
PdfPCell cell = new PdfPCell(new Phrase("Table XYZ (Continued)"));
cell.setColspan(5);
table.addCell(cell);
table.setHeaderRows(1);
table.setSkipFirstHeader(true);
for (int i = 0; i < 350; i++) {
    table.addCell(String.valueOf(i+1));
}
document.add(table);

与您的代码的不同之处在于,您添加了以下行以避免 header 出现在第一页上:

table.setSkipFirstHeader(true);

Repeat PdfPTable header in all the continuation pages using iText

的回答中没有提到这个