Lecteur pdf javascript pdf.js

Ce plugin est basé sur le projet pdf.js qui permet une lecture en ligne des pdfs depuis le navigateur.

Ce plugin est expérimental et les contributions sur la zone sont les bienvenues.

Avantages

  • Open source basé en javascript
  • Comportement unifié quelque soit le navigateur employé.

Limitations

  • Certains pdfs (polices non standards, trop lourd) ne passent pas bien.

Utilisation

Sous SPIP 3 et 4

Une fois le plugin installé, utiliser le raccourci pour faire apparaitre le lecteur

<emb23898>

.

Il est aussi possible de préciser la taille du cadre

<emb23898|largeur=800|hauteur=600>

On peut aussi utiliser le lecteur en mode plein écran via la page
spip.php?page=pdfjs&id_document=3

Sous 2.1

Une fois le plugin installé, au lieu d’insérer vos documents pdfs par le raccourci <doc23898>, utiliser le raccourci <lecteurpdf23898> pour faire apparaitre le lecteur [1].

Il est aussi possible de préciser la taille du cadre <lecteurpdf23898|largeur=800|hauteur=600>

On peut aussi utiliser le lecteur en mode pleine écran via la page
spip.php?page=pdfjs&id_document=3

Utilisation avec les modèles <media>

Cette section est valable uniquement si vous utiliser le plugin modèles media.

Une fois installé, pour inclure le document 12 dans un texte, il suffit d’utiliser le modèle <media12|embed> de manière classique. Tous les autres paramètres des modèles <media> (alignement, taille, legende...) peuvent être utilisés (voir la documentation des modèles media).

Cette syntaxe assure une pérennité des appels de modèles dans vos textes. Ainsi, si par la suite vous désactiver le plugin pdf.js pour utiliser un autre plugin étendant les modèles média pour les fichiers pdf (comme le plugin Google Viewer), le raccourci <media12|embed> sera pris en compte par cet autre plugin.

Il est également possible de « forcer » l’utilisation du lecteur pdf.js en utilisant la variante de modèle pdfjs. Par exemple : <media12|pdfjs>.

Apercus

Apercu du lecteur en mode normal
Apercu du lecteur avec le volet mode plan
Aperçu du lecteur inclu dans un article

Incompatibilités

Le plugin ne fonctionne pas correctement avec Acces Restreint 3.0 lorsque l’option Interdire la lecture des documents joints est activée.

Note : à partir de la version 0.5.1, le plugin devrait être compatible avec la dernière version du plugin Accès Restreint, tant que les documents ne sont pas distants (il est donc nécessaire d’avoir une copie locale des PDFs affichés avec pdfjs). Cependant, l’interaction entre pdf.js et Accès restreint n’a pas encore été testée de manière approfondie et des bugs ne sont donc pas à exclure.

Avec le plugin Metaplus, pour éviter d’ajouter les metas sur l’iframe ajoutez dans vos options

// pas de metaplus sur pdfjs
define('_METASPLUS_PAGES_EXCLUES','pdfjs');

Notes

[1Le raccourci <lecteurpdf23898> est aussi fonctionnel sous SPIP 3.

Discussion

Une discussion

  • 4

    Bonjour. Merci pour toutes vos précieuses contributions.
    Nous avons un souci avec pdfjs depuis quelques mois seulement : sur certains navigateurs et certains systèmes uniquement, il manque des caractères dans les fichiers affichés. Et nous n’arrivons même pas à identifier les configuration en erreur. J’arrive à reproduire sur mon PC ubuntu avec chromium, pas avec firefox, un autre n’a pas de souci sous linux+chromium. Je n’ai pas de pb sur une VM windows avec firefox ni edge, alors que la personne à l’origine de l’alerte utilise forefox sur windows !

    Toujours est-il que les messages qu’on trouve sur la console semblent bien connus dans de la communauté pdfjs depuis très longtemps, mais je n’ai pas pour autant trouvé la parade :
    Warning : getPathGenerator - ignoring character : « Error : Requesting object that isn’t resolved yet Helvetica_path_[. ».

    Quelqu-un-e a une idée ? Merci d’avance,
    Phy
    SPIP 3.19 + sarkaspip 4.5.16
    pdf.js 1.1.2

    • Un élément de réponse.
      En regardant mieux les messages d’errur (1 pour chaque caractère manquant semble-t-il), je me rend compte qu’ils sont précédés de plusieurs ligens de la forme
      "Warning : fetchStandardFontData : failed to fetch file « plugins/auto/pdfjs/v1.1.2/lib/pdfjs/web/standard_fontsFoxitSerifBold.pfb »

      À l’évidence, il manque un « / » après « standard_fonts ». Mais je n’ai aucune idée de ce qu’il faut faire pour le rajouter.
      Help !
      Et merci :-)

    • J’ai trouvé !
      Enfin, presque. En supprimant la ligne 28 du fichier pdfjs.html :
      PDFViewerApplicationOptions.set('standardFontDataUrl', "[(#CHEMIN{lib/pdfjs/web/standard_fonts})]");
      ça marche.

      Tentative d’analyse : la suppression rétablit le chemin des fo,ntes à « ../web/standard_fonts » comme défini dans web/viewer.js ; Donc ça semble indiquer que la balise #CHEMIN ne renvoie pas ce qu’il faut pour que les navigateurs puissent aller chercher les fontes par défaut.

      Hypothèse : ce serait un vrai bug ; mais visible uniquement sur les configurations de navigateur qui vont chercher les fontes par défaut sur le serveur.

      Malheureusement, je ne maitrise pas assez les balises SPIP pour être sur de mon analyse et proposer une correction valable. Si quelqu’un-e peut confirmer (ou infirmer) et proposer un patch destiné à être intégré dans les mises à jour, ce serait top !

      Merci d’avance,
      Phy.

    • Bonjour,
      J’avais ce souci aussi (il m’étais signalé par plusieurs personnes) sur plusieurs sites.
      Cela dépend pour moi de mon navigateur sous MacOS : ok avec Chrome , pas ok avec Firefox
      En tout cas, ta solution m’a permis de régler le bug. Un grand merci !
      Je vais faire un ticket sur le Git de SPIP pour signaler le bug et ton analyse.
      Johan

    • Ça a été corrigé sur le git de SPIP : https://git.spip.net/spip-contrib-extensions/pdfjs/issues/5

      La version 1.1.4 devrait corriger ce bug (ton diagnostic était bon physsa, merci !)

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom