com.lowagie.text.pdf
Class PdfAnnotation.PdfImportedLink

java.lang.Object
  extended by com.lowagie.text.pdf.PdfAnnotation.PdfImportedLink
Enclosing class:
PdfAnnotation

public static class PdfAnnotation.PdfImportedLink
extends java.lang.Object

This class processes links from imported pages so that they may be active. The following example code reads a group of files and places them all on the output PDF, four pages in a single page, keeping the links active.

 String[] files = new String[] {"input1.pdf", "input2.pdf"};
 String outputFile = "output.pdf";
 int firstPage=1;
 Document document = new Document();
 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile));
 document.setPageSize(PageSize.A4);
 float W = PageSize.A4.getWidth() / 2;
 float H = PageSize.A4.getHeight() / 2;
 document.open();
 PdfContentByte cb = writer.getDirectContent();
 for (int i = 0; i < files.length; i++) {
    PdfReader currentReader = new PdfReader(files[i]);
    currentReader.consolidateNamedDestinations();
    for (int page = 1; page <= currentReader.getNumberOfPages(); page++) {
        PdfImportedPage importedPage = writer.getImportedPage(currentReader, page);
        float a = 0.5f;
        float e = (page % 2 == 0) ? W : 0;
        float f = (page % 4 == 1 || page % 4 == 2) ? H : 0;
        ArrayList links = currentReader.getLinks(page);
        cb.addTemplate(importedPage, a, 0, 0, a, e, f);
        for (int j = 0; j < links.size(); j++) {
            PdfAnnotation.PdfImportedLink link = (PdfAnnotation.PdfImportedLink)links.get(j);
            if (link.isInternal()) {
                int dPage = link.getDestinationPage();
                int newDestPage = (dPage-1)/4 + firstPage;
                float ee = (dPage % 2 == 0) ? W : 0;
                float ff = (dPage % 4 == 1 || dPage % 4 == 2) ? H : 0;
                link.setDestinationPage(newDestPage);
                link.transformDestination(a, 0, 0, a, ee, ff);
            }
            link.transformRect(a, 0, 0, a, e, f);
            writer.addAnnotation(link.createAnnotation(writer));
        }
        if (page % 4 == 0)
        document.newPage();
    }
    if (i < files.length - 1)
    document.newPage();
    firstPage += (currentReader.getNumberOfPages()+3)/4;
 }
 document.close();
 


Method Summary
 PdfAnnotation createAnnotation(PdfWriter writer)
           
 int getDestinationPage()
           
 boolean isInternal()
           
 void setDestinationPage(int newPage)
           
 java.lang.String toString()
          Returns a String representation of the link.
 void transformDestination(float a, float b, float c, float d, float e, float f)
           
 void transformRect(float a, float b, float c, float d, float e, float f)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

isInternal

public boolean isInternal()

getDestinationPage

public int getDestinationPage()

setDestinationPage

public void setDestinationPage(int newPage)

transformDestination

public void transformDestination(float a,
                                 float b,
                                 float c,
                                 float d,
                                 float e,
                                 float f)

transformRect

public void transformRect(float a,
                          float b,
                          float c,
                          float d,
                          float e,
                          float f)

createAnnotation

public PdfAnnotation createAnnotation(PdfWriter writer)

toString

public java.lang.String toString()
Returns a String representation of the link.

Overrides:
toString in class java.lang.Object
Returns:
a String representation of the imported link
Since:
2.1.6


iText 2.1.7