获取Itext中的页码

时间:2015-02-19 15:42:58

标签: java pdf-generation itext

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

如果我的内容被移到下一页,我的作者和文档没有显示更新的页码,直到表内容被添加到文档中。我需要迭代并构建动态表,在那里开始下一页它应该有表的标题。我尝试了我的级别最好的跟随很多方法。但是,我不知道什么时候内容被移动到迭代过程中的下一页.PDFWriter显示我的页面在进入循环之前我需要获取更新的页面编号。当表格内容进入下一页时我不需要这个标题在所有页面上。我需要它直到表格内容继续。请让我知道哪种方法可以解决这种情况。感谢

1 个答案:

答案 0 :(得分:1)

这个问题的另一个答案不是真正的答案,而是指另一个问题的答案。如果这实际上是当前问题的答案,那么当前的问题应该被标记为重复。

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

enter image description here

如您所见,第一页上没有标题,第二页和第三页上只有一个标题为“表XYZ(续)”。我甚至添加了一个页脚,上面写着“继续下一页”。如您所见,此页脚仅在表格分割时出现。它不在最后一页上。这个问题没有被问到,并且很容易从我的代码中删除。

您可以在此处找到完整的代码示例: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);

如果您只想要标题:

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);

与您的代码的区别在于,您添加以下行以避免标题出现在第一页上:

table.setSkipFirstHeader(true);

Repeat PdfPTable header in all the continuation pages using iText

的答案中未提及此问题