gpt4 book ai didi

image - 如何将图像添加到 PDF 的所有页面?

转载 作者:行者123 更新时间:2023-12-05 09:23:25 33 4
gpt4 key购买 nike

我一直在尝试使用 itextsharp 将图像添加到所有页面。图像需要覆盖每个页面的所有内容。我在所有其他doc.add()

下方使用了以下代码
Document doc = new Document(iTextSharp.text.PageSize.A4, 10, 10, 30, 1);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(Server.MapPath("~/pdf/" + fname), FileMode.Create));
doc.Open();
Image image = Image.GetInstance(Server.MapPath("~/images/draft.png"));
image.SetAbsolutePosition(12, 300);
writer.DirectContent.AddImage(image, false);
doc.Close();

上面的代码只在最后一页插入了一张图片。有没有办法在所有页面中以相同的方式插入图像?

最佳答案

图片只添加一次是正常的;毕竟:您只添加一次。 (或者您在代码片段中遗漏了一些基本步骤:请参阅我所做的编辑。)

无论如何:您可以使用页面事件来解决您的问题。这里有一些 Java 示例:http://itextpdf.com/sandbox/events

或者你可以引用我这本书的第5章。所有示例都可以在 Java 中找到以及 C# .

您应该在 5 个步骤中创建一个文档,并在第 2 步中添加一个事件:

// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.GetInstance(document, stream);
MyEvent event = new MyEvent();
writer.PageEvent = event;
// step 3
document.Open();
// step 4
// Add whatever content you want to add
// step 5
document.Close();

您必须自己编写 MyEvent 类:

protected class MyEvent : PdfPageEventHelper {

Image image;

public override void OnOpenDocument(PdfWriter writer, Document document) {
image = Image.GetInstance(Server.MapPath("~/images/draft.png"));
image.SetAbsolutePosition(12, 300);
}

public override void OnEndPage(PdfWriter writer, Document document) {
writer.DirectContent.AddImage(image);
}
}

MyEvent 类中的 OnEndPage() 将在每次 PdfWriter 完成一页时触发。因此图像将被添加到每个页面上。

警告:在 OnEndPage() 方法之外创建 image 对象很重要,否则图像字节有被添加的风险PDF 中有页面的次数(导致 PDF 臃肿)。

关于image - 如何将图像添加到 PDF 的所有页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908651/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com