我想創建一個PDF文檔在C#中使用iTextSharp 5.0.6。我想分別在OnStartPage和OnEndPage事件的每個頁面添加頁眉和頁腳。PDF頁腳在底部使用iTextSharp
在頁腳的情況下,有一個問題,頁腳是在頁面結束的地方創建的,而我想在頁面的底部。
iTextSharp是否有方法指定頁面高度,以便始終在底部創建頁腳。
謝謝!
我想創建一個PDF文檔在C#中使用iTextSharp 5.0.6。我想分別在OnStartPage和OnEndPage事件的每個頁面添加頁眉和頁腳。PDF頁腳在底部使用iTextSharp
在頁腳的情況下,有一個問題,頁腳是在頁面結束的地方創建的,而我想在頁面的底部。
iTextSharp是否有方法指定頁面高度,以便始終在底部創建頁腳。
謝謝!
頁的身高是總是定義:
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問題處理該類。打開,你會發現他們。
如何訪問「getDirectContent()」函數? iTextSharp在編寫器對象上似乎沒有這樣的方法。 – NickG 2013-10-15 09:46:38
@NickG,在C#中,你可以使用'writer.DirectContent'。 – 2013-11-24 22:37:11
文本「blah」僅在chrome中可見。您可以使用BeginText()和EndText()來包圍showtext函數,並使其成爲如下形式:footer.BeginText(); footer.ShowText(「blah」); footer.EndText(); – 2014-02-11 11:46:15