【问题标题】:Parameter 'Nameddest' in PDF filesPDF 文件中的参数“Nameddest”
【发布时间】:2025-12-16 13:05:01
【问题描述】:

我想通过 nameddest 参数在特定书签/大纲位置打开 PDF。 例如,以下链接在书签“内容”处打开一个 PDF:

https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf#nameddest=Contents

以下链接在书签“参数”处打开文件: https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf#nameddest=Parameters

以下链接还会在书签“参数”处打开文件: https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf#nameddest=G4.1501771

从上面的例子,为什么nameddest=G4.150177?

如果我已经有一个 PDF 文件,如何检索 nameddest 参数的所有可能值?

PDF 文件中是否有可以检索所有书签的部分,以便可以在 nameddest 参数中使用它们?

我知道书签部分显示的名称可能与其实际目的地不同(PDF 规范https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf#nameddest=G4.1501771

【问题讨论】:

    标签: pdf


    【解决方案1】:

    首先,这些参数并非在每个浏览器中都有效。例如,Safari 不尊重它们。它只是打开到第一页。

    其次,Chrome 确实尊重这些参数,但认为 PDF 书签和命名目标是一回事。所以命名目的地“G4.1501771”和书签“参数”最终会去同一个地方。 PDF 书签和命名目的地实际上是不同的东西。命名目的地始终是文档中的一个位置。 PDF 书签可以有任意数量的与之关联的操作,其中之一就是去一个特定的位置。

    为什么 nameddest=G4.150177?

    因为 PDF 是在 Adob​​e FrameMaker 中创建的,并且 FrameMaker 会根据标题自动放入命名目标。我敢肯定它们不是随机的名字,但它们看起来确实很像。

    PDF 文件中是否有可以检索所有书签的部分,以便可以在 nameddest 参数中使用它们?

    大多数 PDF 查看器会列出书签,但 Adob​​e Acrobat 会同时列出书签和命名目标。如果您想以编程方式进行,书签树是文档目录中的一个字典,可以通过许多不同的 PDF API 访问。

    【讨论】:

    • 非常感谢您的回答,现在很清楚了。所以我想我需要寻找的是那个文件目录。我目前有一个用 ruby​​ 编写的软件,可以在特定部分打开一个 chm 帮助文件。我在docx中编写了帮助文件,然后将其转换为chm。我希望在 pdf 文件中具有相同的可访问性。我的 docx 文件的标题比后来转换为 PDF 文件中的书签。关于我可以用来访问文档目录的 ruby​​ PDF API 有什么建议吗?
    • 我不关注 ruby​​,所以不能给你任何推荐。