【发布时间】:2017-06-07 16:55:16
【问题描述】:
我正在使用 iTextSharp 生成包含读者可能不知道的单词的 PDF。所以我想给这些词加下划线,然后添加一个功能,其中(1)当用户将鼠标悬停在词上时,会弹出一个定义,(2)如果用户点击弹出的定义,它会转到文档的定义部分。
我在网上看到了执行此操作的示例代码,但它始终要求您知道链接将出现在页面上的哪个位置,而在我的情况下,我正在生成一个结构化文档(章节和部分),所以我不知道词的位置。
我怀疑它使用了 PdfAnnotation 和 Link,但不知道具体是如何使用的。
如果解决方案在文本位于表格单元格时也有效(我看到的一些解决方案在那里有问题),则可以加分。
附言一些进展:
当我创建我的定义部分时,我调用
this.Chunks[0].SetLocalDestination("Definitions");
当我将具有挑战性的单词添加到我的 PDF 文档中时,我会在 Chunk 上调用 SetGenericTag()。然后,在我对 PdfPageEvent.OnGenericTag() 的覆盖中,我这样做:
PdfAnnotation link = PdfAnnotation.CreateLink(writer, rect, PdfAnnotation.HIGHLIGHT_INVERT, PdfAction.GotoLocalPage("Definitions", false));
writer.AddAnnotation(link);
这满足了我的部分需求——如果我点击这个词,它会将我带到文档的“定义”部分。但是当您将鼠标悬停在单词上时,仍然没有出现定义。
【问题讨论】:
-
stackoverflow 链接与官方文档中的第二个链接相同;当我实现该代码时,在 Windows Adobe 阅读器中,当我将鼠标悬停在我的单词上时,我会看到标准的“将您的回复添加到此评论”弹出窗口,但是当我移动鼠标时它会改变形状。在 Mac 中它是相同的弹出窗口,但是当我移动鼠标时它会闪烁。在这两种情况下,都没有选项可以单击它以跳转到“定义”部分。
-
当我从官方文档的第一个链接中实现代码时,当我将鼠标悬停在单词上时它不会做任何事情,并且我在同一位置得到单词和文本字段页面。