iText 5

How to stamp image on existing PDF and create an anchor? | iText 5 PDF Development Guide

How do I make an image clickable?


I have an existing document, onto which I would like to stamp an image at an absolute position. I am able to do this, 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:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException { PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); Image img = Image.getInstance(IMG); float x = 10; float y = 650; float w = img.getScaledWidth(); float h = img.getScaledHeight(); img.setAbsolutePosition(x, y); stamper.getOverContent(1).addImage(img); Rectangle linkLocation = new Rectangle(x, y, x + w, y + h); PdfDestination destination = new PdfDestination(PdfDestination.FIT); PdfAnnotation link = PdfAnnotation.createLink(stamper.getWriter(), linkLocation, PdfAnnotation.HIGHLIGHT_INVERT, reader.getNumberOfPages(), destination); link.setBorder(new PdfBorderArray(0, 0, 0)); stamper.addAnnotation(link, 1); stamper.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.getScaledWidth(); float h = img.getScaledHeight();

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 result here: link_image.pdf If you click on the i icon, you jump to the last page of the document.