2011-03-12 49 views
4

我想創建一個PDF文檔在C#中使用iTextSharp 5.0.6。我想分別在OnStartPage和OnEndPage事件的每個頁面添加頁眉和頁腳。PDF頁腳在底部使用iTextSharp

在頁腳的情況下,有一個問題,頁腳是在頁面結束的地方創建的,而我想在頁面的底部。

iTextSharp是否有方法指定頁面高度,以便始終在底部創建頁腳。

謝謝!

回答

4

頁的身高是總是定義:

document.PageSize.Height // document.getPageSize().getHeight() in Java 

記住,在PDF 0,0是左下角,和你去正確的和UP協調增長。

在PdfPageEvent中,您需要使用絕對座標。這聽起來像是要從文檔中獲取當前Y,或者在當前位置獲取僅繪製材質。不要這樣做。另外,如果您想在每個頁面上使用相同的頁腳,可以將所有內容都繪製到PdfTemplate中,然後將該模板繪製到您想要的各個頁面上。

writer.getDirectContent().addTemplateSimple(footerTmpl, 0, 0); 

即使您的頁腳的是一樣的,你可以使用這種技術來保存:

PdfTemplate footerTmpl = writer.getDirectContent().createTemplate(0, 0, pageWidth, footerHeight); 

footerTmpl.setFontAndSize(someFont, someSize); 
footerTmpl.setTextMatrix(x, y); 
footer.showText("blah"); 
// etc 

然後在你的PdfPageEvent,你可以在你的頁面的底部添加footerTempl內存,執行時間和文件大小。此外,如果您不想直接使用PdfContentByte繪圖命令,可以通過ColumnText在某種程度上避免它們。有幾個標有iText或iTextSharp的SO問題處理該類。打開,你會發現他們。

+0

如何訪問「getDirectContent()」函數? iTextSharp在編寫器對象上似乎沒有這樣的方法。 – NickG 2013-10-15 09:46:38

+2

@NickG,在C#中,你可以使用'writer.DirectContent'。 – 2013-11-24 22:37:11

+0

文本「blah」僅在chrome中可見。您可以使用BeginText()和EndText()來包圍showtext函數,並使其成爲如下形式:footer.BeginText(); footer.ShowText(「blah」); footer.EndText(); – 2014-02-11 11:46:15