通过使用 PDFBox,可以使用 PDPageDestination
轻松创建指向特定页面或页面 View 的链接。例如,以下代码将创建一个转到第 9 页的链接:
PDAnnotationLink link = new PDAnnotationLink();
PDPageDestination destination = new PDPageFitWidthDestination();
PDActionGoTo action = new PDActionGoTo();
destination.setPage(document.getPage(9));
action.setDestination(destination);
link.setAction(action);
问题:
我不想转到特定页面,而是转到上一个 View 。
例如,假设在 PDF 文件中,P.1 和 P.2 都有一个指向 P.9 的链接。现在我想在 P.9 上添加一个返回用户所在位置的链接开始了。
如果用户从 P.1 开始并单击指向 P.9 的链接,他将到达 P.9。当他点击第 9 页上的链接时,他将返回到他来自的第 1 页。但如果他从 P.2 开始,那么 P.9 的链接将返回到 P.2。
问题:如何使用 PDFBox 实现此目的?
仅供引用,使用 Adobe Acrobat,这可以通过向链接添加“执行菜单项”操作,然后选择“上一个 View ”作为菜单项来实现,如以下屏幕截图所示:
最佳答案
在 Tilman 的指导下,我成功解决了自己的问题。
我找不到能够添加“命名操作”的 PDAction 子类,因此我创建了自己的子类“PDActionNamed”:
class PDActionNamed extends PDAction {
public static final String SUB_TYPE = "Named";
public PDActionNamed() {
super();
setSubType( SUB_TYPE );
}
public void setN( String s ) {
action.setName( "N", s );
}
}
要使用子类,
PDAnnotationLink link = new PDAnnotationLink();
PDActionNamed action = new PDActionNamed ();
action.setN("GoBack"); // this is one of Acrobat's default named action
link.setAction(action);
它似乎甚至可以在不支持 Javascript 的 PDF 阅读器(例如 SumatraPDF)上工作。
关于java - 如何使用 PDFBox 创建转到*上一 View *的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28060866/