Hyperlink 我的iText RemoteGoto没有';不要跳到正确的目的地

Hyperlink 我的iText RemoteGoto没有';不要跳到正确的目的地,hyperlink,itext,goto,Hyperlink,Itext,Goto,在我的iText文档中,我正在写一些关于我的实体的文本,这些文本将引用另一个PDF文档中的事件。 使用iText执行此操作有多种方法: static String externalLinkPrefix = "external_entity_"; String externalFile = "anotherPdf.pdf"; Chunk entity = new Chunk("name"); // use the plain remoteGoto() method chunk.setRemoteG

在我的iText文档中,我正在写一些关于我的实体的文本,这些文本将引用另一个PDF文档中的事件。 使用iText执行此操作有多种方法:

static String externalLinkPrefix = "external_entity_";
String externalFile = "anotherPdf.pdf";
Chunk entity = new Chunk("name");
// use the plain remoteGoto() method
chunk.setRemoteGoto(externalFile, externalLinkPrefix + entity.getIdentifier());
// or use the PdfAction
chunk.setAction(PdfAction.gotoRemotePage(externalFile, externalLinkPrefix + entity.getIdentifier(), false, true);

// later on create the destination in the other file
Paragraph entityReference = new Paragraph(new Chunk("name")
     .setLocalDestination(externalLinkPrefix + entity.getIdentifier());
但是,当我单击创建的链接时,它会将我带到第二个文档的开头,表明它没有找到目的地

我仔细检查了链接“键”是否相同,它们是否相同


iText或PDF阅读器阻碍查找目的地的原因是什么?

有两种方法可以在PDF中描述命名目的地:

  • 您可以使用PDF字符串定义目的地(自PDF 1.2以来首选)
  • 您可以使用PDF名称(PDF 1.1中的原件)定义目的地
  • 在您的情况下,创建一个名称树,将目标存储为PDF字符串:

    你看到第二节了吗?这显然是一个PDF字符串。您正在使用首选方法定义命名目的地,因为在iText中,
    setLocalDestination()
    是以这种方式编程的

    但是,您使用的
    pdprotion.gotoRemotePage()
    方法不完整。基于您的PDF,我假设您使用PDF名称(
    /foo\u section\u 2
    )创建对命名目的地的引用:

    您可以看到
    /foo\u section\u 2
    是一个名称,因为它以
    /
    开头。没有使用目标文件中的名称定义的命名目标,因此找不到目标

    您应该像这样使用
    gotoRemotePage()
    方法:

    PdfAction.gotoRemotePage(externalFile, externalLinkPrefix + entity.getIdentifier(),
        false, true)
    
    gotoRemotePage()
    方法的第三个参数应该是
    false
    ,以确保创建指向使用PDF字符串而不是PDF名称的命名目的地的链接(这可能是您正在执行的操作)

    出于某种原因,Acrobat认为grunddaten没有任何指定的目的地:

    当我查看导航选项卡时,这一点得到了确认,但当我尝试添加一个命名目的地时,我得到“阅读此文档时出现问题(15)”。我不知道15指的是什么

    运行飞行前,我会获得更多信息:


    这说明NameTreeRoot的构造不正确。我得调查出什么事了。当我创建一个带有命名目的地的文档时,它会起作用,请参见。我刚刚对它进行了测试并进行了飞行前测试,它工作得非常好。我不知道你的文件出了什么问题…

    你能分享PDF吗?这样我们就可以检查文档中带有链接的GoToR链接,以及文档中带有引用的命名目的地。很抱歉延迟。有关链接,请参见我的编辑。我想在我的问题中添加pdf流的相关部分,但我在文档中发现了一点怪癖。在链接源文档中,有多个gotor,而应该只有一个(可能是我的错误)。你能指出流程的相关部分吗?谢谢你的详细回答。然而,我必须承认,当我删除代码中不相关的东西时,我犯了一个错误。。我编辑了我的问题以包含完整的iText API调用gotoRemotePage(),我已经使用了第3(=false)和第4(=true)参数。我通过上面示例中包含的调用创建目的地。我还试着将isName从true改为false,但都没有成功。我可能很天真,但我认为确保gotos的“名称”是相等的就可以了。还有什么不对劲吗?在把这个问题搁置几天后,我试着让它起作用,瞧,它起作用了。我没有改变任何事情[对我来说很明显]。我正在使用你推荐的方法。感谢您的帮助和见解:-)@RobertNorden谢谢您的反馈。关于这个问题,我的个人待办事项清单上还有一张未解决的罚单(我看了好几次,但我就是不知道出了什么问题)。我现在就把它关了。啊,我可能找到了原因。与此同时,我从iText 5.5.6(见你的截图)切换到了5.5.7!我只是把它换回来测试一下。在5.5.6中它不工作,在5.5.7中它工作!