2014-11-17 3 views
5

Ich habe ein bestehendes Dokument, auf das ich ein Bild an einer absoluten Position stempeln möchte. Ich bin in der Lage, dies zu tun, aber ich möchte auch dieses Bild anklickbar machen: Wenn ein Benutzer auf das Bild klickt, möchte ich die PDF auf die letzte Seite des Dokuments gehen.iText - Wie man ein Bild auf existierende PDF stempelt und einen Anker erstellt

Hier ist mein 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(); 

Jede Idee, wie dies zu tun?

Antwort

6

Sie verwenden eine Technik, die nur beim Erstellen von Dokumenten von Grund auf funktioniert.

Bitte werfen Sie einen Blick auf die AddImageLink Beispiel herausfinden, wie ein Bild hinzufügen und einen Link zu diesem Bild klickbare zu einem vorhandenen Dokument zu machen:

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(); 
} 

Sie haben bereits den Teil des Bildes nach rechts über das Hinzufügen . Beachten Sie, dass ich Parameter für die Position des Bildes erstellen sowie seine Abmessungen:

float x = 10; 
float y = 650; 
float w = img.getScaledWidth(); 
float h = img.getScaledHeight(); 

ich diese Werte verwenden, um ein Rectangle Objekt zu erstellen:

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

Dies ist der Ort für den Link Annotation wir erstellen mit der PdfAnnotation Klasse. Sie müssen diese Annotation separat mithilfe der Methode addAnnotation() hinzufügen.

Sie können sich das Ergebnis hier einen Blick: link_image.pdf Wenn Sie auf das Symbolklicken i, Sie zur letzten Seite des Dokuments springen.

Verwandte Themen