【问题标题】:How to add image background to pdf for every page?如何为每个页面添加图像背景到pdf?
【发布时间】:2013-02-11 13:27:27
【问题描述】:

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

【问题讨论】:

    标签: c# itextsharp


    【解决方案1】:

    当你想对每个页面应用一些东西时,你应该使用页面事件,更具体地说是PdfPageEvent.onEndPage(), 来做到这一点。您可以通过关键字Page events > onEndPage 找到其用法示例——这些示例取自iText in Action 2nd Edition。示例主要添加页脚和页眉,而您要添加背景图形。

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

    PS: .Net 的类似示例可以在here.找到。

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

    【讨论】:

    • 你给我看的文档是java的,我的项目是c#
    • @XandrUu 我在答案中添加了指向类似 .Net 示例的链接。
    • 正是我应该寻找的,因为我没有找到任何有用的东西
    • 您应该了解如何实现 PdfPageEvent 类并使用它在您创建的文档的每个页面上应用一些更改,例如为Stationery.cs中的每个页面添加相同的背景;您的要求与该示例之间的唯一区别是该示例将另一个 PDF 的页面作为背景,而您只需要一个图像。
    【解决方案2】:

    PdfPageEvent.onStartPage()

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

    【讨论】:

      猜你喜欢
      • 2020-02-19
      • 2022-10-06
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多