在我的pdf中,我需要多個頁眉和頁腳。在標題中,我希望標題標題在左側,並且中心有一些文字。如何使用itext在pdf中添加多個頁眉和頁腳
同樣在頁腳中,我需要在左側打印我的公司名稱,中心的頁碼以及有關右側的表格中的內容的一些信息。
我見過這麼多的職位,但我沒有得到正確的理念,爲創建this.Somebody請幫我一些示例代碼snippets.Thanks
在我的pdf中,我需要多個頁眉和頁腳。在標題中,我希望標題標題在左側,並且中心有一些文字。如何使用itext在pdf中添加多個頁眉和頁腳
同樣在頁腳中,我需要在左側打印我的公司名稱,中心的頁碼以及有關右側的表格中的內容的一些信息。
我見過這麼多的職位,但我沒有得到正確的理念,爲創建this.Somebody請幫我一些示例代碼snippets.Thanks
頁眉和頁腳應該使用頁面事件「被添加。如果您需要一些示例,請在官方網站上查找關鍵字header/footer。
只需創建一個擴展PdfPageEventHelper
並實現onEndPage()
方法的類。閱讀文檔的人不會使用onStartPage()
方法的常見錯誤,但也許您忽略了這一點,所以我將此添加爲一個額外的警告。
使用setPageEvent()
方法將類的實例添加到PdfWriter對象。
我不知道我是否理解「多個」標題的含義。如果您有多個頁面事件實現,則可以使用setPageEvent()
方法將它們全部添加,並且它們都將被執行。如果您想從一個頁面事件實現切換到另一個,則首先需要使用setPageEvent(null)
。
也許你想讓頁眉針對不同的頁面有所不同,只需在你的頁面事件實現中使用一個成員變量,並沿途改變它。在名爲MovieHistory2的書籍示例之一中,標題的文本存儲在名爲header
的String
陣列中。
首部的位置取決於頁號:
public void onEndPage(PdfWriter writer, Document document) {
Rectangle rect = writer.getBoxSize("art");
switch(writer.getPageNumber() % 2) {
case 0:
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_RIGHT, header[0],
rect.getRight(), rect.getTop(), 0);
break;
case 1:
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_LEFT, header[1],
rect.getLeft(), rect.getTop(), 0);
break;
}
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_CENTER, new Phrase(String.format("page %d", pagenumber)),
(rect.getLeft() + rect.getRight())/2, rect.getBottom() - 18, 0);
}
對於偶數頁號碼,報頭被添加到右邊;對於左側的奇數頁碼。如您所見,頁腳居中。
您還提到了一個表頭。如果您想使用表格,請參閱MovieCountries1示例。
你說:「我看過這麼多帖子,但我沒有得到正確的創意。」您將通過閱讀文檔獲得正確的想法,更具體地說,本書中涉及到的代碼片段是來自「iText in Action - Second Edition」一書的第5章。