2016-04-22 6 views
2

私はpdfbox 2.0を使用して、私はPDFファイル内のすべてのリンクを見つける。しかし私はジャンプするページを見つける方法を知らない?私は、20ページの内部リンク「第1章」を持っている、これは私がページ先または指定先のいずれかとすることができるjquery cookbook.pdfジャンプするページを見つける方法。私はPDFBox 2.0.0とPDActionGoToを使用して

public static void main(String[] args) throws IOException { 
      PDDocument doc = null; 
       doc = PDDocument.load(new File("D:\\demoConverter\\input\\jQuery_Cookbook.pdf")); 
       int pageNum = 0; 
       doc.getNumberOfPages(); 
       for (PDPage page : doc.getPages()) { 
        pageNum++; 
        List<PDAnnotation> annotations = page.getAnnotations(); 
        for (PDAnnotation annot : annotations) { 
         if (annot instanceof PDAnnotationLink) { 
          PDAnnotationLink link = (PDAnnotationLink) annot; 

          PDAction action = link.getAction(); 
          if (action instanceof PDActionURI) { 
           PDActionURI uri = (PDActionURI) action; 
          } 
          // internal link 
          if (action instanceof PDActionGoTo) { 
           PDDestination destination = ((PDActionGoTo)action).getDestination(); 
           // how to get page will to jump to 
          } 
         } 
        } 
       } 

答えて

3

このような目的地を使用していたファイルです。ページの送り先は簡単で、名前付きの送り先では名前テーブルを参照する必要があります。

if (action instanceof PDActionGoTo) 
{ 
    PDPageDestination pageDestination = null; 
    PDPage page = null; 
    PDDestination destination = ((PDActionGoTo)action).getDestination(); 
    if (destination instanceof PDPageDestination) 
    { 
     pageDestination = (PDPageDestination) destination; 
     page = pageDestination.getPage(); 
    } 
    else if (destination instanceof PDNamedDestination) 
    { 
     pageDestination = doc.getDocumentCatalog().findNamedDestinationPage((PDNamedDestination) destination); 
     if (pageDestination == null) 
     { 
      return null; 
     } 
     page = pageDestination.getPage(); 
    } 
    else 
    { 
     // error handling 
    } 
} 
+0

ありがとうございます、それは正しく動作します。 – Adam

関連する問題