簡體   English   中英

在itext中獲取頁碼

[英]Get page number in Itext

我正在嘗試使用Itext.where生成pdf文件,而我需要構建一個帶有標題的表。 但是我通過迭代列表並將單元格添加到表格中來動態添加頁面上的所有內容,並在完成交互后最終將表格添加到文檔中。 document.add(表);

如果將我的內容移至下一頁,我的作者和文檔不會顯示更新的頁碼,直到將表內容添加到文檔中為止。我需要迭代並構建動態表,在下一頁的開始處應該具有該表的標題。我通過多種方法盡了最大努力。但是,我不知道何時在迭代過程中將內容移至下一頁。PDFWriter在輸入之前向我顯示頁碼循環。每次表內容轉到下一頁時,我都需要獲取更新的頁碼。我不需要此標頭出現在所有頁面上。我只需要在表內容繼續之前就需要它。請讓我知道哪個是處理這種情況的最佳方法。 謝謝

這個問題的另一個答案不是真正的答案,而是另一個問題的答案。 如果這實際上是當前問題的答案,則應將當前問題標記為重復。

話雖如此,我認為答案並不完全正確。 我寫了一個示例,產生了這樣的結果:

在此處輸入圖片說明

如您所見,第一頁上沒有標題,第二頁和第三頁上只有一個標題為“表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);

使用iText的所有連續頁面中的Repeat PdfPTable標頭的答案中未提及此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM