Skip to main content
Skip table of contents

How to stamp image on existing PDF and create an anchor?

I have an existing document, onto which I would like to stamp an image at an absolute position.

I am able to stamp the image, but I would also like to make this image clickable: when a user clicks on the image I would like the PDF to go to the last page of the document. Here is my code:

 

PdfReader readerOriginalDoc = new PdfReader("src/main/resources/test.pdf");
PdfStamper stamper = new PdfStamper(
    readerOriginalDoc, new FileOutputStream("NewStamper.pdf"));
PdfContentByte content = stamper.getOverContent(1);
Image image = Image.getInstance("src/main/resources/images.jpg");
image.scaleAbsolute(50, 20);
image.setAbsolutePosition(100, 100);
image.setAnnotation(new Annotation(0, 0, 0, 0, 3));
content.addImage(image);
stamper.close();
Any idea how to do this?

 

 

Posted on StackOverflow on Nov 17, 2014 by BYJU SUKUMARAN

You are using a technique that only works when creating documents from scratch.

Please take a look at the AddImageLink example to find out how to add an image and a link to make that image clickable to an existing document:

protected void manipulatePdf(String dest) throws Exception {
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
    ImageData img = ImageDataFactory.create(imgSrc);
    float x = 10;
    float y = 650;
    float w = img.getWidth();
    float h = img.getHeight();
    PdfPage page = pdfDoc.getFirstPage();
    new PdfCanvas(page.newContentStreamAfter(), pdfDoc.getFirstPage().getResources(), pdfDoc)
            .addImage(img, x, y, false);
    Rectangle linkLocation = new Rectangle(x, y, w, h);
    PdfAnnotation annotation = new PdfLinkAnnotation(linkLocation)
            .setHighlightMode(PdfAnnotation.HIGHLIGHT_INVERT)
            .setAction(PdfAction.createGoTo(PdfExplicitDestination.createFit(pdfDoc.getLastPage())))
            .setBorder(new PdfArray(new float[]{0, 0, 0}));
    page.addAnnotation(annotation);
    pdfDoc.close();
}

You already have the part about adding the image right. Note that I create parameters for the position of the image as well as its dimensions:

float x = 10;
float y = 650;
float w = img.getWidth();
float h = img.getHeight();

I use these values to create a Rectangle object:

Rectangle linkLocation = new Rectangle(x, y, x + w, y + h);

This is the location for the link annotation we are creating with the PdfAnnotation class. You need to add this annotation separately using the addAnnotation() method.

You can take a look at the resulting pdf: if you click on the i icon, you jump to the last page of the document.

Click How to stamp image on existing PDF and create an anchor? if you want to see how to answer this question in iText 5.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.