我正在使用iTextSharp生成包含读者可能不知道的单词的PDF。所以我想强调这些单词,然后添加一个功能,其中(1)当用户将鼠标悬停在单词上时,会弹出一个定义,(2)如果用户点击弹出的定义,它会转到文件的定义部分。
我看到在线执行此操作的示例代码,但它总是要求您知道链接在页面上的显示位置,在我的情况下,我正在生成结构化文档(章节和章节),所以我不知道这个词的位置。
我怀疑它使用PdfAnnotation和Link,但无法弄清楚究竟是怎么做的。
如果解决方案在文本位于表格单元格中时也能正常工作(我看到的某些解决方案存在问题),那么
奖励积分。
P.S。一些进展:
当我创建“定义”部分时,我会调用
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);
满足了我需要的部分内容 - 如果我点击文档的“定义”部分中的单词。但是当你将鼠标悬停在单词上时,仍然没有出现定义。
答案 0 :(得分:1)
这是我想出的:
PushbuttonField button = new PushbuttonField(writer, rect, "DefineButton-" + (++NumButtons));
PdfFormField field = button.Field;
field.Action = PdfAction.GotoLocalPage("Definitions", false);
field.UserName = definition;
writer.AddAnnotation(field);