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

我正在尝试设置pdf的背景并设法用图像设置我的pdf有一个大表,所以页面是自动添加的而不是Document.NewPage()方法所以图像背景只设置在第一个页。 这是添加背景的代码:

  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找到其使用的样本—这些样本来自动作第2版的iText 。 当您想要添加背景图形时,样本主要添加页脚和标题。

请注意,您不应该在此处向Document实例添加内容,而是直接向PdfWriter,添加内容PdfWriter,并且您希望图像位于页面内容之下,而不是在其上方,您需要使用PdfWriter.getDirectContentUnder()如示例Stationery而不是像其他示例中的PdfWriter.getDirectContent()

PS: .Net的类似样本可以在这里找到。

PPS:示例ImageDirect.java / ImageDirect.cs显示了如何将图像添加到某些直接内容,这可能是此处缺少的信息。

去做

PdfPageEvent.onStartPage()

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