2014-11-17 20 views
5

Ho un documento esistente, sul quale desidero stampare un'immagine in una posizione assoluta. Sono in grado di farlo, ma vorrei anche rendere questa immagine selezionabile: quando un utente fa clic su sull'immagine, desidero che il PDF passi all'ultima pagina del documento.iText - Come stampare un'immagine su PDF esistente e creare un'ancora

Ecco il mio codice:

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

Qualsiasi idea di come fare questo?

risposta

6

Si sta utilizzando una tecnica che funziona solo quando si creano documenti da zero.

Si prega di dare un'occhiata all'esempio AddImageLink per scoprire come aggiungere un'immagine e un link per rendere l'immagine cliccabile a un documento esistente:

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

Hai già la parte di aggiungere l'immagine a destra . Si noti che Creo parametri per la posizione dell'immagine così come le sue dimensioni:

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

uso questi valori per creare un oggetto Rectangle:

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

Questa è la posizione per l'annotazione link che stanno creando con la classe PdfAnnotation. È necessario aggiungere questa annotazione separatamente usando il metodo addAnnotation().

si può prendere uno sguardo al risultato qui: link_image.pdf Se si fa clic sui icona , si salta l'ultima pagina del documento.