web-dev-qa-db-ja.com

PDFドキュメント内のWebページから特定のセクション(アンカー)へのリンク

Adobeの標準 があります。これは、理論的には、特定のセクションを開く方法でブラウザでクリックされたリンクからドキュメントを開くPDFドキュメントを開くことを指定します(別名 "アンカー"、 "名前付き参照 ")of PDF document。この機能は、一部の大きなPDF(標準または仕様)。

しかし、私が今見ているところから見ると、この標準のサポートはほとんど存在しません。

たとえば、これらのリンクは開く必要がありますScalaリファレンスPDFセクション3.2.6、「注釈付きタイプ」:

  1. http://www.scala-lang.org/docu/files/ScalaReference.pdf#subsection.3.2.6
  2. http://www.scala-lang.org/docu/files/ScalaReference.pdf#nameddest=subsection.3.2.6
  3. http://www.scala-lang.org/docu/files/ScalaReference.pdf#page=2

(技術的には、バリアント#3は基本的に同じ宛先であるページ#23を開く必要があります)

大部分のシステムでこれを機能させるための有効な方法(シム、独自のラッパーなど)はありますか? Adobe Readerプラグインの使用シェアはどのくらいですか?他のシステムについて気にする必要がありますか?

それが不可能な場合は、少なくとも、サイトのユーザーが名前付きの宛先リンクを使用できるようにしたい場合に推奨できる、すべてのプラットフォーム(Windows、Linux、Macなど)で機能するソリューションを見つけたいと思います。

私がテストしたものから:

  • Windows、MSIE/Firefox/Chrome、Adobe Acrobat Readerプラグイン-すべてのバリアントはバージョン9以降で動作しますが、
    • MSIEには奇妙なキャッシュの問題があります(つまり、ドキュメントがキャッシュされるまでアンカーは機能しません)
    • 古いバージョンは機能しません
    • リンク形式の問題 があります。通常、「http://」で始まる実際のWebサーバーへの通常の絶対リンクである必要があります。相対リンク、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」を渡さないため)
  • すべてのOS、Firefox 15以降 PDF.js内部PDFビューア -機能しません

いろいろな組み合わせでテストしてみてください。

30
GreyCat

一般的に機能しているように見えるのはバリアント#4ですが、PDFドキュメント、この場合は実際のページへの分割と同じようにページ番号を使用しています。

http://www.scala-lang.org/docu/files/ScalaReference.pdf#page=31

PDF文書には、目次の後に適切なコンテンツから始まるページ番号がありますが、その番号付けは#page = ...で使用されるものとは異なります.

14