使用iTextSharp创建图像时,将图像水印添加到Pdf

Dee*_*ons 6 c# pdf asp.net watermark itextsharp

不知道这是否可能.在创建pdf并将其保存在磁盘后,在添加水印时看到很多帖子.但在创建文档时如何添加图像水印.我知道如何将图像添加到文档中.但是我如何定位它以使其出现在页面末尾.

Mar*_*rer 5

这与添加页眉或页脚基本相同。

您需要创建一个实现 的类PdfPageEvent,并在 中OnPageEnd获取页面的 PdfContentByte,然后在那里绘制图像。使用绝对位置。

注意:您可能想从 PdfPageEventHelper 派生,它具有所有页面事件的空实现,因此您只需要编写您真正关心的方法。

注意:除非您的图像大部分是透明的,否则将其绘制在页面顶部会掩盖许多事情。IIRC(“如果我记得正确”),iText 添加的 PNG 和 GIF 文件将自动被正确屏蔽,让它们下面的东西显示出来。

如果你想在所有东西下面添加一个不透明的图像,你应该覆盖OnStartPage()

这是 Java,但转换它主要是将方法名称大写并交换 get/set 调用以进行属性访问。

Image watermarkImage = new Image(imgPath);
watermarkImage.setAbsolutePosition(x, y);

writer.setPageEvent( new MyPageEvent(watermarkImage) );


public MyPageEvent extends PdfPageEventHelper {
  private Image waterMark;
  public MyPageEvent(Image img) {
    waterMark = img;
  }
  public void OnEndPage/*OnStartPage*/(PdfWriter writer, Document doc) {
    PdfContentByte content = writer.getContent();
    content.addImage( waterMark );
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

对于C#,请使用此代码...

//new Document

Document DOC = new Document();


// open Document

DOC.Open();


//create New FileStream with image "WM.JPG"

FileStream fs1 = new FileStream("WM.JPG", FileMode.Open);


iTextSharp.text.Image JPG = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(fs1), ImageFormat.Jpeg);


//Scale image

JPG.ScalePercent(35f);


//Set position

JPG.SetAbsolutePosition(130f,240f);

//Close Stream

fs1.Close();


DOC.Add(JPG);
Run Code Online (Sandbox Code Playgroud)