图片只添加一次是正常的;毕竟:您只添加一次。 (或者您在代码片段中遗漏了一些基本步骤:请参阅我所做的编辑。)
无论如何:您可以通过使用页面事件来解决您的问题。这里有一些 Java 的例子:http://itextpdf.com/sandbox/events http://itextpdf.com/sandbox/events
或者你可以参考我书的第五章。所有示例均可在Java http://itextpdf.com/book/chapter.php?id=5以及在C# http://tinyurl.com/itextsharpIIA2C05.
您应该通过 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);
}
}
The OnEndPage()
在班上MyEvent
每次都会触发PdfWriter
已完成一页。因此,图像将添加到每个页面上。
Caveat:重要的是要创建image
物体外的OnEndPage()
方法,否则图像字节可能会被添加与 PDF 中的页面一样多的次数(导致 PDF 臃肿)。