【发布时间】:2015-03-19 14:20:24
【问题描述】:
通过使用 PDFBox,使用PDPageDestination 可以轻松创建指向特定页面或页面视图的链接。例如,以下代码将创建一个指向第 9 页的链接:
PDAnnotationLink link = new PDAnnotationLink();
PDPageDestination destination = new PDPageFitWidthDestination();
PDActionGoTo action = new PDActionGoTo();
destination.setPage(document.getPage(9));
action.setDestination(destination);
link.setAction(action);
问题:
我不想转到特定页面,而是转到上一个视图。
例如,假设在一个 PDF 文件中,P.1 和 P.2 中的每一个都有一个指向 P.9 的链接。现在我想在 P.9 上放置一个返回用户所在位置的链接开始了。
如果用户从 P.1 开始并单击指向 P.9 的链接,他会到达 P.9。当他点击 P.9 上的链接时,他会回到他来自的 P.1。但如果他从 P.2 开始,那么 P.9 的链接将返回 P.2。
问题:如何使用 PDFBox 实现这一目标?
仅供参考,使用 Adobe Acrobat,这可以通过向链接添加“执行菜单项”操作,然后选择“上一个视图”作为菜单项来实现,如下图所示:
【问题讨论】:
-
我在 PDF 规范中找到了一个实现说明“Acrobat 查看器扩展了表 8.61 中的命名操作列表,以包括查看器中可用的大多数菜单项名称。”因此,需要获取这样一个 PDF 文件,找到名称,并将该名称用作目的地。
-
非常感谢蒂尔曼。抱歉,我是 PDFBox 的新手。我可以就如何找到名称并将该名称用作目的地提供一些指导吗?
-
在NOEPAD++等编辑器中打开您创建的PDF文件,搜索是否找到“prev”、“menu”、“view”之类的内容,希望就是这样。或者用 PDFDebugger(PDFBox 的命令行应用程序)查看。或者在公共场所上传具有该功能的非机密文件,我会查看它以找到该名称。
-
我用文本编辑器打开了我的 PDF 文件,发现以下内容。这正是我通过 Acrobat 创建的链接的坐标。但我不确定 /H、/P、/BS 或 /A 是什么意思。如何使用这些信息来重现 PDFBox 的此类链接? >
-
含义可以在Additional entries specific to a link annotation段的PDF规范中找到。现在在 1050 0 o 会很有趣。