2013-02-20 74 views
1

在我的pdf中,我需要多個頁眉和頁腳。在標題中,我希望標題標題在左側,並且中心有一些文字。如何使用itext在pdf中添加多個頁眉和頁腳

同樣在頁腳中,我需要在左側打印我的公司名稱,中心的頁碼以及有關右側的表格中的內容的一些信息。

我見過這麼多的職位,但我沒有得到正確的理念,爲創建this.Somebody請幫我一些示例代碼snippets.Thanks

回答

3

頁眉和頁腳應該使用頁面事件「被添加。如果您需要一些示例,請在官方網站上查找關鍵字header/footer

只需創建一個擴展PdfPageEventHelper並實現onEndPage()方法的類。閱讀文檔的人不會使用onStartPage()方法的常見錯誤,但也許您忽略了這一點,所以我將此添加爲一個額外的警告。

使用setPageEvent()方法將類的實例添加到PdfWriter對象。

我不知道我是否理解「多個」標題的含義。如果您有多個頁面事件實現,則可以使用setPageEvent()方法將它們全部添加,並且它們都將被執行。如果您想從一個頁面事件實現切換到另一個,則首先需要使用setPageEvent(null)

也許你想讓頁眉針對不同的頁面有所不同,只需在你的頁面事件實現中使用一個成員變量,並沿途改變它。在名爲MovieHistory2的書籍示例之一中,標題的文本存儲在名爲headerString陣列中。

首部的位置取決於頁號:

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章。

相關問題