gpt4 book ai didi

pdf - 使用 ITextSharp 编辑 PDF 中的超链接和 anchor

转载 作者:行者123 更新时间:2023-12-04 23:07:55 25 4
gpt4 key购买 nike

我正在使用 iTextSharp 库和 C#.Net 来拆分我的 PDF 文件。

考虑一个名为 sample.pdf 的 PDF 文件,其中包含 72 页。此 sample.pdf 包含具有导航到其他页面的超链接的页面。例如:在第 4 页中有三个超链接,点击后会导航到相应的第 24、27、28 页。与第 4 页相同,有近 12 个页面与它们有此超链接。

现在使用 iTextSharp 库,我已将此 PDF 页面拆分为 72 个单独的文件,并以 1.pdf,2.pdf....72.pdf 的名称保存。因此,在 4.pdf 中单击该超链接时,我需要使 PDF 导航到 24.pdf,27.pdf,28.pdf。

请帮帮我。如何编辑和设置 4.pdf 中的超链接,以便导航到相应的 pdf 文件。

谢谢,
阿肖克

最佳答案

你想要的完全有可能。您需要使用低级 PDF 对象(PdfDictionary、PdfArray 等)。

每当有人需要处理这些对象时,我总是将他们提到 PDF Reference .在您的情况下,您需要检查第 7 章(特别是第 3 节)和第 12 章第 3 节(文档级导航)和第 5 节(注释)。

假设您已经阅读了该内容,那么您需要执行以下操作:

  • 逐步遍历每个页面的注释数组(在原始文档中,在分解之前)。
  • 查找所有链接注释及其目的地。
  • 为与新文件对应的链接构建一个新目标。
  • 将该新目的地写入链接注释中。
  • 使用 PdfCopy 将此页面写入新的 PDF(它将复制注释以及页面内容)。

  • 步骤 1.1 并不简单。有几种不同类型的“本地转到”注释格式。您需要确定给定链接指向哪个页面。一些链接可能会说 PDF 等效于“下一页”或“上一页”,而其他链接会包含对特定页面的引用。这将是“间接对象引用”,而不是页码。

    要从页面引用中确定页码,您需要...哎哟。好的。最有效的方法是为原始文档中的每个页面调用 PdfReader.GetPageRef(int pageNum) 并将其缓存在 map 中(reference->pageNum)。

    然后,您可以通过创建远程转到 PdfAction 并将其写入链接注释的“A”(操作)条目来构建“远程转到”链接,删除之前存在的任何内容(可能是“Dest”)。

    我不太会说 C#,所以我会把实际的实现留给你。

    关于pdf - 使用 ITextSharp 编辑 PDF 中的超链接和 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578316/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com