提问者:小点点

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


共2个答案

匿名用户

每当您想将某些内容应用于每个页面时,您应该使用页面事件,更具体地说是PdfPageEvent. onEndPage(),来执行此操作。您可以通过关键字页面事件找到其用法示例

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

PS:. net的类似示例可以在这里找到。

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

匿名用户

去做

Pdf Page Event. on StartPage()

.在这种情况下,编写您的代码来插入图像(就像您正在做的那样)。它将做的是,一旦创建了一个新页面,它就会将图像添加到其中,然后将内容添加到其中;提供水印效果。