【问题标题】:Link between different Sections in same PDF同一 PDF 中不同部分之间的链接
【发布时间】:2019-01-10 11:38:08
【问题描述】:

我们正在创建一个 PDF 文档,该文档由单独生成的不同部分组成,然后添加到单个文档中。现在我们需要提供一个超链接来将用户导航到不同部分的某个点。

我们正在使用 iText 7.0.5 并尝试使用链接和链接注释,但没有用。映射适用于同一部分,但不适用于不同部分。

【问题讨论】:

  • 我觉得Add anchor to pdf using itext java这个问题的答案可能对你有帮助
  • 谢谢。也尝试过这种方法,但结果相同。
  • 如何创建最终文档?您是否有不同的 pdf,然后以某种方式合并到一个文档中?还是你单独创建每个部分的内容,然后一个接一个地添加到最终文档中?
  • @UladzimirAsipchuk 我们将每个部分的内容分别创建为字节数组,然后创建每个部分的 PDFDocuments,然后使用 PDFMerger (com.itextpdf.kernel.utils. PdfMerger)。

标签: java itext pdf-generation


【解决方案1】:

您的用例:合并 pdf 并提供在结果文档中导航的方法。

怎么做?:请看下一个 iText 示例:https://github.com/itext/i7js-examples/blob/develop/src/test/java/com/itextpdf/samples/sandbox/merge/MergeWithToc.java

在该示例中,合并了一些 pdf,然后创建了一个目录,以便人们可以单击其中的项目并导航到相应的页面。

为此,建议在“部分”的某些元素上设置命名目的地:

// Put the destination at the very first page of each merged document
if (i == 1) {
    text.setDestination("p" + pageNo);
}
doc.add(new Paragraph(text).setFixedPosition(pageNo, 549, 810, 40).setMargin(0).setMultipliedLeading(1));

然后在适当的 TOC 元素上设置操作:

p.setAction(PdfAction.createGoTo("p" + entry.getKey()));

也许同样的逻辑也适用于您的情况。

【讨论】:

  • Uladzimir Asipchuk 感谢您的解决方案。上述解决方案适用于我们的场景,我们必须添加一个指向特定目的地的超链接。但是现在我们有一个要求,我们需要多个超链接,每个超链接指向不同的位置/文本。我们尝试使用与上述相同的解决方案,但每个链接都指向最后一个目的地(例如,如果我们添加 4 个链接,所有链接仅重定向到第 4 个目的地)。此外,根据您的解决方案,文档是预先创建的,我们在合并时添加链接,但在我们的例子中,我们在创建文档时添加链接。请帮助。
  • 对于后者:文档是否预先创建没有区别。在这两种情况下,建议添加一个具有设置目标的元素,然后从 TOC 引用它。至于前者:我已经更新了代码,一切都很好。我猜你创建了具有相同目标集的元素(在上面示例的上下文中,具有相同的 setDestination() 参数。这就是我修改上面示例的方式:pastebin.com/a1kZQ1sA
  • 顺便说一句,如果您对答案感到满意,为什么您既不接受也不赞成? :)
  • 以下是我的同事发布的与同一问题/疑问相关的问题的 URL。您能否检查一下代码,让我们知道出了什么问题。谢谢。 stackoverflow.com/questions/55043420/…顺便说一句,我接受并赞成上述答案:P
  • 我也回答了这个问题
猜你喜欢
  • 1970-01-01
  • 2022-11-26
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
相关资源
最近更新 更多