我正在尝试创建一个简单的目录(文档只有 4 页长)。 我遇到的问题是,虽然我的鼠标确实变成了一只手,但当我点击它时没有任何反应。 是的,目标在另一页上。
创建目录行:
Chunk chunk = new Chunk("Contact information");
chunk.setLocalGoto("Contact information");
document.add(new Paragraph(chunk));
目标之一:
Anchor anchor = new Anchor("Contact information", font1);
anchor.setName("Contact information");
Chapter chapter = new Chapter(new Paragraph(anchor), 1);
chapter.setNumberDepth(0);
document.add(chapter);
Goto String
与 Anchor name
匹配,所以我看不出我做错了什么。
最佳答案
在this example来自 iText in Action,内部链接在名称中使用 #
。
另一种方法是对链接和目标都使用 Chunk
。
chunkDest.setLocalDesitination("foo");
...
chunkLink.setLocalGoto("foo"); // or "#foo"?
我对 PdfDocument
(localGoto 和 localDestination)的阅读让我相信它们的创建顺序无关紧要......等等......不,应该无关紧要只要两者都被实际调用。
您是否真的单步执行了您的代码以确保它们都被实际调用了?
另一种选择:结束运行。下拉到 PDF 原生代码并在那里执行。为章节位置构建您自己的 PdfDestination
,为 TOC 构建您自己的 PdfAction
。像这样:
PdfDestination fitH = new PdfDestination(PdfDestination.FITH);
// the destination doesn't have a page associated with it until you call
// gotoLocalPage. Kinda goofy, but we can work with it.
PdfAction link = PdfAction.gotoLocalPage(pageNum, fitH, writer);
chunk.setAction(link);
注意事项:
- 如果您需要指向同一位置的多个链接,您可以重复使用给定的 PdfAction。
- 定义 PdfDestination 的方法有很多种,我只使用了我喜欢的一种。 YMMV。
关于java - iText 与 anchor 有问题(可点击但没有任何反应),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4592134/