有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA pdfbox和GROOVY在打开PDF时显示书签,setPageMode不工作

我正在尝试合并所有的PDF文件和创建书签,它工作得很好。 最后一步是设置一个在打开PDF时自动显示书签的功能

我已经在pdfbox-2.0.20中测试了以下代码

下面的部分代码

totalPages = totalPages + pdfDocPages
            println it["TLF_NUM"] + ": " + it["TLF_TITLE"]
            def page = pages.get( totalPages - pdfDocPages);
            def dest = new PDPageFitWidthDestination()
            dest.setPage(page)

            def bookmark = new PDOutlineItem()
            bookmark.setDestination(dest)
            bookmark.setTitle( it["TLF_NUM"] + ": " + it["TLF_TITLE"] )
            pagesOutline.appendChild( bookmark )
                        }
                    }
            }

    pagesOutline.openNode()

    outline.openNode()

    pdfDocument.getDocumentCatalog().setPageMode(PageMode.USE_OUTLINES)

    pdfDocument.save(pdfoutfullpath)
    pdfDocument.close()
    }

下面列出了我遇到的错误

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No 
signature of method: org.apache.pdfbox.pdmodel.PDDocumentCatalog.setPageMode() is applicable for 
argument types: (org.apache.pdfbox.pdmodel.PageMode) values: [USE_OUTLINES]
Possible solutions: 
setPageMode(java.lang.String), getPageMode()
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:95)
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:706)
     at MergePDFBookmarks.invokeMethod(Script1.groovy)
     at org.codehaus.groovy.runtime.InvokerHelper$2.run(InvokerHelper.java:415)
Caused by: groovy.lang.MissingMethodException: No signature of method: 
org.apache.pdfbox.pdmodel.PDDocumentCatalog.setPageMode() is applicable for argument types: 
(org.apache.pdfbox.pdmodel.PageMode) values: [USE_OUTLINES]
Possible solutions: 
setPageMode(java.lang.String), getPageMode()

共 (1) 个答案

  1. # 1 楼答案

    根据评论,您使用的是1.8而不是2.0。删除。来自您不使用的版本的jar文件。你不能两者都用

    在1.8中,使用

    pdfDocument.getDocumentCatalog().setPageMode(PDDocumentCatalog.PAGE_MODE_USE_OUTLINES)
    

    pdfDocument.getDocumentCatalog().setPageMode("UseOutlines")