web-dev-qa-db-fra.com

Lien depuis une page Web vers une section spécifique (ancre) dans le document PDF

Il existe un standard d'Adobe qui en théorie spécifie l'ouverture PDF documents à partir d'un lien cliqué dans un navigateur de manière à ouvrir des sections spécifiques (AKA "ancre", " nommée référence ") de PDF document. Cette fonctionnalité devrait être d'une grande aide si l'on souhaite se référer à une partie spécifique de gros PDF (comme certains norme ou spécification).

Cependant, d'après ce que je vois maintenant, le support de cette norme est presque inexistant.

Par exemple, ces liens devraient ouvrir Scala Reference PDF à la section 3.2.6, "Types annotés":

  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

(Techincally, la variante # 3 devrait ouvrir la page # 23, qui est essentiellement la même destination)

Existe-t-il un moyen de travailler (peut-être avec quelques cales, des wrappers propriétaires ou autre) pour que cela fonctionne sur la majorité des systèmes? Quelle est la part d'utilisation du plugin Adobe Reader, dois-je me soucier des autres systèmes?

Si ce n'est pas possible, j'aimerais au moins trouver une solution de travail pour chaque plate-forme (c'est-à-dire Windows, Linux, Mac) que je pourrais recommander aux utilisateurs de mon site s'ils souhaitent pouvoir utiliser des liens de destination nommés.

D'après ce que j'ai testé:

  • Windows, MSIE/Firefox/Chrome, plugin Adobe Acrobat Reader - toutes les variantes fonctionnent avec la version 9+, mais:
    • MSIE a un problème de mise en cache étrange (c'est-à-dire que l'ancre ne fonctionne pas tant que le document n'a pas été mis en cache)
    • Les anciennes versions ne fonctionnent pas
    • Il a problèmes avec le format de lien : généralement, il doit s'agir d'un lien absolu régulier vers un vrai serveur Web, en commençant par "http: //". Liens relatifs, liens de style samba (\\Host\dir\file.pdf#something), rien d'autre que le schéma "http" (ou probablement "https") ne fonctionnera pas
  • Windows, tous les navigateurs configurés pour exécuter Adobe Acrobat Reader en tant que processus distinct - ne fonctionne pas
  • Windows, tous les navigateurs, FoxIt Reader - ne fonctionne pas
  • Windows, tous les navigateurs, CutePDF - ne fonctionne pas
  • Linux/Konqueror/Okular - seule la variante # 1 fonctionne
  • Linux, tout autre navigateur configuré pour exécuter Okular ou tout autre PDF en tant que processus externe - ne fonctionne pas (car le navigateur ne transmet aucun "#argument" dans une ligne de commande)
  • Tout système d'exploitation, Firefox 15+ PDF.js internal PDF viewer - ne fonctionne pas

J'apprécierais si vous l'essayiez pour tester dans différentes combinaisons différentes.

30
GreyCat

Ce qui semble fonctionner en général est la variante # 4 mais en utilisant le numéro de la page comme dans la division réelle en pages dans le document PDF, dans ce cas

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

Le document PDF a des numéros de page qui commencent à partir du contenu proprement dit, après la table des matières, mais cette numérotation diffère de celle à utiliser dans #page = ...

14
Jukka K. Korpela