C# – Add an image to an existing PDF file with iText7

citext7pdf

I want to add an image to a specific position inside an existing PDF file using iText7.
In a different project using iTextSharp, the code was very simple:

iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(new Uri(fullPathSignature));
// Set img size and location on page
//-------------------------------------
// item.Width, item.Height
img.ScaleAbsolute(120, 62);

// left: item.X bottom: item.Y
img.SetAbsolutePosition(25, 25);
//-------------------------------------

//Add it to page 1 of the document,
PdfContentByte cb = stamper.GetOverContent(1);
cb.AddImage(img);

But I do not find the correct way to do it with iText7.
I have a PdfReader and a PdfWriter but where can I find the PdfStamper in iText7?
Or maybe there is a different way to add an image to an existing PDF file in iText7?
(I can't use iTextSharp in current project)

Best Answer

In iText7, there is no PdfStamper anymore. PdfDocument is responsible for modifying the contents of the document.

To add an image to a page, the easiest way is to use Document class from layout module. With that you almost don't have to care about anything.

To add an image to a specific page at a specific position, you need the following code:

// Modify PDF located at "source" and save to "target"
PdfDocument pdfDocument = new PdfDocument(new PdfReader(source), new PdfWriter(target));
// Document to add layout elements: paragraphs, images etc
Document document = new Document(pdfDocument);

// Load image from disk
ImageData imageData = ImageDataFactory.Create(imageSource);
// Create layout image object and provide parameters. Page number = 1
Image image = new Image(imageData).ScaleAbsolute(100, 200).SetFixedPosition(1, 25, 25);
// This adds the image to the page
document.Add(image);

// Don't forget to close the document.
// When you use Document, you should close it rather than PdfDocument instance
document.Close();
Related Topic