Reputation: 109
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)
Upvotes: 9
Views: 25636
Reputation: 12302
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();
Upvotes: 36