Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
262 views
in Technique[技术] by (71.8m points)

html - Linking from a web page to a specific section (anchor) in PDF document

There is a standard from Adobe that in theory specifies opening PDF documents from a link clicked in a browser in a way to open specific sections (AKA "anchor", "named reference") of PDF document. This functionality should be of great help if one would like to refer to a specific portion of large PDF (such as some standard or specification).

However, from what I see now, support for this standard is close to non-existent.

For example, these links should open Scala Reference PDF at section 3.2.6, "Annotated Types":

  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=23

(Techincally, variant #3 should open page #23, which is essentially the same destination)

Is there a working way (may be with a couple of shims, proprietary wrappers or whatever else) to make this work on majority of systems? What is the usage share of Adobe Reader plugin, should I care about other systems?

If it's not possible, at least I'd like to find a working solution for every platform (i.e. Windows, Linux, Mac) that I could recommend to my site's users if they want to be able to use named destination links.

From what I've tested:

  • Windows, MSIE/Firefox/Chrome, Adobe Acrobat Reader plugin - all variants work with version 9+, but:
    • MSIE has a weird caching issue (i.e. anchor does not work until document was cached)
    • Older versions do not work
    • It has issues with link format: generally, it should be regular absolute link to a real web server, starting with "http://". Relative links, samba-style links (\HOSTdirfile.pdf#something), anything else besides "http" (or probably, "https") scheme won't work
  • Windows, any browsers set up to run Adobe Acrobat Reader as a separate process - does not work
  • Windows, any browsers, FoxIt Reader - does not work
  • Windows, any browsers, CutePDF - does not work
  • Linux/Konqueror/Okular - only variant #1 works
  • Linux, any other browsers set up to run Okular or any other PDF viewer as external process - does not work (as browser does not pass any "#arguments" in a command line)
  • Any OS, Firefox 15+ PDF.js internal PDF viewer - does not work

I'd appreciate if you'd try it to test in various different combinations.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

What seems to work in general is variant #4 but using the number of the page as in actual division into pages in the PDF document, in this case

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

The PDF document has page numbers that start from the content proper, after the table of content, but that numbering differs from the one to be used in #page=...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...