Legacy notice!

iText 5 is the previous major version of iText’s leading PDF SDK. iText 5 is EOL, and is no longer developed, although we still provide support and security fixes. Switch your project to iText 8, our latest version which supports the latest PDF standards and technologies.
Check related iText 8 content!

My problem is that in some PDF files no watermark is added although the file size increased. Why is that?


I'm using C# and iTextSharp to add a watermark to my PDF files:


Document document = new Document();
PdfReader pdfReader = new PdfReader(strFileLocation);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(strFileLocationOut, FileMode.Create, FileAccess.Write, FileShare.None));
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(WatermarkLocation);
img.SetAbsolutePosition(100, 300);
PdfContentByte waterMark;
for (int pageIndex = 1; pageIndex  pdfReader.NumberOfPages; pageIndex++) {
    waterMark = pdfStamper.GetOverContent(pageIndex);
    waterMark.AddImage(img);
}
pdfStamper.FormFlattening = true;
pdfStamper.Close();
It works fine, but my problem is that in some PDF files no watermark is added although the file size increased, any idea?


Posted on StackOverflow on Jul 8, 2013 by Abady

The fact that the file size increases is a good indication that the watermark is added. The main problem is that you're adding the watermark outside the visible area of the page. See my answer to the question How to position text relative to page using iText?

You need something like this:

Rectangle pagesize = reader.getCropBox(pageIndex);
if (pagesize == null)
    pagesize = reader.getMediaBox(pageIndex);
img.SetAbsolutePosition(
    pagesize.GetLeft(),
    pagesize.GetBottom());

That is: if you want to add the image in the lower-left corner of the page. You can add an offset, but make sure the offset in the x direction doesn't exceed the width of the page, and the offset in the y direction doesn't exceed the height of the page.