如何为每个页面添加图像背景到pdf?

问题描述:

我想设置一个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()方法。在关闭文档之前,我是否必须循环播放每一页并在结尾添加背景图像,但是如何将它放在背景中而不是其他元素之上?

无论何时您想将某些内容应用于每个页面,您都应该使用页面事件,更具体地说,可以使用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

PdfPageEvent.onStartPage()

。在这种情况下,编写代码插入图像(就像你这样做)。它会做的是,只要一个新页面被创建,它就会将图像添加到它,然后将内容添加到它;给水印效果。