2012-11-22 97 views
0

我有一個PDF文檔,其中通常每個頁面都加上一個頁腳,頁碼前面有頁面應該位於的章節名稱。然而,偶爾,我得到了一些跨越多頁的大表結果。itextsharp中的頁腳文本和頁碼

我需要維護它們所在的當前部分的頁腳標記,但由於大型表運行多個頁面,因此這些頁面將被蓋上前一部分頁腳標記和表格的最後一頁顯示在獲取當前章節頁腳的郵票上。

如果任何人都能想出一個解決方案來設置和維護當前章節中的章節/章節頁腳,那將是非常好的。

*其他* 這裏是onEndPage的代碼。

public override void OnEndPage(PdfWriter writer, Document document) 
{ 
    base.OnEndPage(writer, document); 

    if ((pagenumber - 1) >= 1) 
    { 
     String text = footer + pagenumber.ToString(); 
     float len = bf.GetWidthPoint(text, 8); 

     Rectangle pageSize = document.PageSize; 

     cb.SetRGBColorFill(100, 100, 100); 

     cb.BeginText(); 
     cb.SetFontAndSize(bf, 8); 
     cb.SetTextMatrix(pageSize.GetRight(100), pageSize.GetBottom(20)); 
     cb.ShowText(text); 
     cb.EndText(); 
     if (this.currentChapter > this.totalChapters) 
     { 
      pagenumber = 0; 
     } 
     else 
     { 
      pagenumber++; 
     } 
    } 
    else 
    { 
     pagenumber++; 
    } 
} 

我跳過添加文檔的頁眉和頁腳信息,因爲我有一個封面。因爲各個部分是不同的信息,所以我根據各個領域將它們分解成章節和小節。此外,用戶可以選擇從數據庫信息中一次打印出大量的PDF。在每章開始時,我使用以下命令設置頁腳文本:

this.PageEventHandler.footer = "(Part 1) - Page: "; 

或者至少我正在嘗試。當談到第二部分(「就業史」)時,如果一個人在各個部門的工作經歷中有很多交換,他們可以建立一個相當的記錄,並且會溢出到幾頁。

+1

你能粘貼一些源代碼嗎? –

+0

你如何標題和頁腳?你在使用頁面事件嗎? –

+0

布魯諾,我使用pdfPageEventHelper對象的擴展是。正如我所說的,正常情況下,它正確地將頁腳標記到onEndPage事件的頁面上,但是如果表格溢出到新頁面上,onEndPage似乎不會被調用,並且它繼續使用前面的章節頁腳文本。 – Dramoth

回答

1

這樣做的一種方法是使用PdfPageEvents在處理每頁時添加頁腳。該文檔適用於Java版本,但您需要覆蓋onEndPage方法。

iTextPDF - PdfPageEvent

+0

嗨Echilon,我重寫onEndPage事件,但它似乎並沒有拿起由PDFFable溢出到一個新的頁面引起的分頁符。或者確實如此,但它似乎並不希望添加正確的頁腳文本。 – Dramoth