【发布时间】:2020-07-18 03:31:15
【问题描述】:
我正在尝试合并所有 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()
【问题讨论】:
-
我怀疑你的类路径中有一个 pdfbox 1.8 .jar 文件。因为 String 参数在 1.8 中而不是在 2.0 中。在开发和运行时清理旧的东西。
-
@TilmanHausherr,谢谢!是啊,你说得对。但我必须使用 1.8,因为有些模块只适用于 1.8,而不适用于 2.0。那么通过使用1.8,我应该如何修改上面的代码才能让它工作呢?
标签: java groovy pdfbox bookmarks