java - 如何找到要跳转到的页面。我使用 PDFBox 2.0.0 和 PDActionGoTo

标签 java pdfbox

我使用 pdfbox 2.0,我在一个文件 pdf 中找到了所有内部链接。但是我不知道如何找到要跳转到的页面?我在第 20 页有一个内部链接“第 1 章”,这是我使用过的文件 jquery cookbook.pdf

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
                           }
                        } 
                    }
                }

最佳答案

此类目的地可以是页面目的地或命名目的地。页面目标很简单,命名目标需要在名称表中查找。

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
     }
}

关于java - 如何找到要跳转到的页面。我使用 PDFBox 2.0.0 和 PDActionGoTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790374/

相关文章:

Java 获取 MIB 中 OID 的名称/描述

java - 垃圾收集详细信息 : Is this object eligible for GC?

java - 为什么用递归停止 isRoundNumber

java - PDF框2.0 : First letter of some words are not visible when extracting text

java - PDF框2.0 : invisible lines on rotated page - clip path issue

java - Wicket Header 渲染策略

java - Java 泛型的 'E' 、 'T' 和 '?' 有什么区别?

java - 使用 pdfbox 2.0.X jar 进行文本提取

java - 使用使用 maven-shade-plugin 构建的 pdfbox 的程序结果与正常的 NetBeans Run 不同

java - 使用 PDFBox 嵌入字体以扁平化 PDF 表单