Adding Image watermark to Pdf while Creating it using iTextSharp

前端 未结 3 931
情深已故
情深已故 2021-01-12 16:07

Wonder if this possible. Saw many posts on adding watermark after the pdf is created and saved in disk. But during creation of document how do i add a image watermark. I kno

3条回答
  •  温柔的废话
    2021-01-12 16:56

    This is the accepted answer's port to C#, and what worked for me. I'm using an A4 page size:

    Define this BackgroundImagePdfPageEvent class:

    public class BackgroundImagePdfPageEvent : PdfPageEventHelper
    {
        private readonly Image watermark;
    
        public BackgroundImagePdfPageEvent(string imagePath)
        {
            using (var fs = new FileStream(imagePath, FileMode.Open))
            {
                watermark = Image.GetInstance(System.Drawing.Image.FromStream(fs), ImageFormat.Jpeg);
                watermark.SetAbsolutePosition(0, 0);
                watermark.ScaleAbsolute(PageSize.A4.Width, PageSize.A4.Height);
                watermark.Alignment = Image.UNDERLYING;
            }
        }
    
        public override void OnStartPage(PdfWriter writer, Document document)
        {
            document.Add(watermark);
        }
    }
    

    Then, when creating your document:

    var doc = new Document(PageSize.A4);
    doc.SetMargins(60f, 60f, 120f, 60f);
    var outputStream = new MemoryStream();
    var writer = PdfWriter.GetInstance(doc, outputStream);
    var imagePath = "PATH_TO_YOUR_IMAGE";
    writer.PageEvent = new BackgroundImagePdfPageEvent(imagePath);
    

提交回复
热议问题