2013-02-11 138 views
0

我想設置一個PDF背景,並設置了一個圖像我的pdf有一個大表,所以頁面自動添加不與Document.NewPage()方法,因此圖像背景只設置在第一頁。這是,其將所述背景的代碼:如何爲每個頁面添加圖像背景到pdf?

Image backImg = Image.GetInstance(@"D:\websites\DIS\bugs\130208\A4.png"); 
    backImg.SetAbsolutePosition(0, 0); 
    backImg.Alignment = Image.UNDERLYING; 

    var doc = new Document(pageSize); 
    PdfWriter pdfWriter = PdfWriter.GetInstance(doc, new FileStream(filePath, FileMode.Create)); 
    doc.Open(); 

    doc.Add(backImg); 
    ... 
    creating a big table 

和不使用doc.NewPage()方法。在關閉文檔之前,我是否必須循環播放每一頁並在結尾添加背景圖像,但是如何將它放在背景中而不是其他元素之上?

回答

5

無論何時您想將某些內容應用於每個頁面,您都應該使用頁面事件,更具體地說,可以使用PdfPageEvent.onEndPage(),。您可以通過關鍵字Page events > onEndPage找到樣品供其使用---這些樣品取自iText in Action 2nd Edition。樣本主要添加頁腳和標題,同時您想添加背景圖形。

要知道,你不應該添加內容到Document實例在這裏,而是直接將PdfWriter,和你想要的圖像是頁面內容下,不在上面,你將需要使用PdfWriter.getDirectContentUnder()像樣品Stationery而不是PdfWriter.getDirectContent()像在其他樣品。

PS: for .NET的類似樣本,可以發現here.

PPS:樣品ImageDirect.java/ImageDirect.cs顯示瞭如何將圖像添加到這可能是在這裏失去了一些信息直接內容。

+0

您向我展示的文檔是用於java的,我的項目在c# – XandrUu 2013-02-11 14:05:17

+0

@XandrUu我在類似的.Net示例中添加了一個鏈接到答案。 – mkl 2013-02-11 14:15:21

+0

正是我應該看的,因爲我沒有找到有用的東西 – XandrUu 2013-02-11 14:35:21

0

PdfPageEvent.onStartPage()

。在這種情況下,編寫代碼插入圖像(就像你這樣做)。它會做的是,只要一個新頁面被創建,它就會將圖像添加到它,然後將內容添加到它;給水印效果。