【发布时间】:2012-11-05 19:27:28
【问题描述】:
有一个standard from Adobe 理论上指定从在浏览器中单击的链接打开 PDF 文档以打开 PDF 文档的特定部分(又名“锚点”、“命名参考”)。如果您想参考大型 PDF 的特定部分(例如某些标准或规范),此功能应该会有很大帮助。
但是,就我现在所见,对这个标准的支持几乎不存在。
例如,这些链接应在第 3.2.6 节“带注释的类型”中打开 Scala 参考 PDF:
- http://www.scala-lang.org/docu/files/ScalaReference.pdf#subsection.3.2.6
- http://www.scala-lang.org/docu/files/ScalaReference.pdf#nameddest=subsection.3.2.6
- http://www.scala-lang.org/docu/files/ScalaReference.pdf#page=23
(从技术上讲,变体 #3 应该打开页面 #23,它本质上是相同的目的地)
是否有一种可行的方法(可能使用几个垫片、专有包装器或其他任何东西)可以在大多数系统上进行这项工作? Adobe Reader 插件的使用份额是多少,我应该关心其他系统吗?
如果不可能,至少我想为每个平台(即 Windows、Linux、Mac)找到一个可行的解决方案,如果他们希望能够使用命名的目标链接,我可以推荐给我的网站用户。
根据我的测试:
- Windows、MSIE/Firefox/Chrome、Adobe Acrobat Reader 插件 - 所有变体都适用于版本 9+,但是:
- MSIE 有一个奇怪的缓存问题(即,在缓存文档之前,锚点不起作用)
- 旧版本无法使用
- 它有issues with link format:一般来说,它应该是一个真正的Web服务器的常规绝对链接,以“http://”开头。相对链接、samba 风格链接 (
\\HOST\dir\file.pdf#something),除了“http”(或者可能是“https”)方案之外的任何其他内容都不起作用
- Windows,任何设置为将 Adobe Acrobat Reader 作为单独进程运行的浏览器 - 都不起作用
- Windows、任何浏览器、FoxIt Reader - 不起作用
- Windows、任何浏览器、CutePDF - 不起作用
- Linux/Konqueror/Okular - 只有变体 #1 有效
- Linux,设置为运行 Okular 或任何其他 PDF 查看器作为外部进程的任何其他浏览器 - 不起作用(因为浏览器不会在命令行中传递任何“#arguments”)
- 任何操作系统,Firefox 15+ PDF.js internal PDF viewer - 不工作
如果您能尝试以各种不同的组合进行测试,我将不胜感激。
【问题讨论】:
-
基本问题可能是您所谓的 Adobe 标准 实际上只是 Adobe Acrobat SDK 的 指南 i> 可以追溯到 2007。虽然 2008 年的 PDF 参考实际上(主要仅进行了编辑更改)成为了 ISO 标准,但该 URL 指南 AFAIK 并没有同样提升。因此,该指南仅与 Adobe Acrobat & Reader 及其浏览器集成相关(甚至可能以过时的方式与它们相关)。任何其他 PDF 查看器可能已经采用了其中的一些机制,但它们也可能有自己的寻址机制或根本没有。
-
关于“Windows,任何设置为作为单独进程运行 Adobe Acrobat Reader 的浏览器”:AFAIK 作为一个单独的进程,这些程序由浏览器打开,只有下载的 PDF 副本的路径.因此,他们根本没有机会到达想要的位置。