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

62 discussions

  • 2

    J’ai fait une liste d’améliorations possibles :
    http://zone.spip.org/trac/spip-zone/browser/_plugins_/pdfjs/TODO.txt

    Je suis prêt à travailler dessus, mais je veux bien un avis avant de commencer.

    • Bonjour,

      le mieux serait d’en discuter sur la liste SPIP-Zone. Dans tous les cas, il faudrait prévoir une branche de dev pour tester tout cela. Créer trunk/branches. Copier la version actuelle en branche et faire pointer le zip dessus. Faire mumuse dans le trunk avec une version 1.

      Pour l’installation dans lib/, le souci est de disposer des versions compilées des différents éléments, qui ne sont pas fournies par défaut dans le ZIP de github. Par ailleurs, ce ZIP contient bp de fichiers inutiles qui du coup ne sont actuellement pas embarqués dans le plugin. Enfin, le lecteur, fichier pdfjs.html, à la racine du plugin, doit être mis à jour en fonction de la version de la lib, sachant qu’il y a une petite adaptation à faire. C’est pourquoi aujourd’hui la solution d’une lib n’a pas été retenue, car il faudrait générer un ZIP spécifique => c’est aussi simple de tout embarquer.

      A voir de toute façon en faisant.

      Gogogo

    • OK je crée la branche, et je continue sur la liste spip_zone

    Répondre à ce message

  • 12
    Lhoual

    Bonjour,
    J’utilise les plugins pdf.js 0.2.2 et Modèles media 1.1.0, j’arrive à inserrer et lire un fichier pdf de moins de 100ko, mais dès que ça fait 6 à 10 pages ou environ 300 à 500ko, j’ai tous les caractères qui ne s’affichent pas correctement !!
    Si quelqu’un aurait déjà rencontré ce soucis, ou saurait m’aider !!
    Je vous remercie d’avance...

    PS : Je joins une image de ce que ça me donne...

    • La librairie PDF.js a parfois du mal avec certains PDF mal encodés.

      En premier lieu, essayez d’ouvrir votre PDF problématique avec la démo de la dernière version en ligne : http://mozilla.github.io/pdf.js/web/viewer.html

      Cliquez sur l’icône ’répertoire avec flèche vers le haut’ pour charger un fichier de votre PC. Est-ce que le même PDF est bien lu ?

    • Lhoual

      Bonjour et merci de la reponse,
      Mais oui en utilisant la demo, mon fichier s’ouvre correctement... :(

    • Cela peut suggérer qu’il y a eu des corrections de bugs dans la librairie. Il faudrait mettre à jour la version de PDF.js inclue dans le plugin et tester si cela résoud ton problème.

      Je le ferai dès que possible (désolé mais pas le temps cette semaine).

    • Lhoual

      D’accord pas de soucis j’attends alors ta version de PDF.js mise à jour !!
      D’ici là je vais voir aussi de mon coté si je peux apporter quelque chose..

      Merci

    • Je viens de mettre à jour le plugin avec la dernière version de PDF.js.

      Il s’agit du numéro de version 0.2.3 pour le plugin. Est-ce que cela résoud le problème avec le PDF incriminé ?

    • Je viens de télécharger la dernière version, pour le cas de mes pdf incriminé, je les repassais une fois sur pdfcreator pour recréer un nouveau fichier pdf et ça marchait.
      Merci encore une fois pour ce plugin très pratique !
      Là je vais avoir des soucis de navigateur car l’entreprise ne veut pas se débarrasser de son IE8, pour l’instant je regarde si je peux avoir d’autres alternatives en modifiant un peu le code sur le plugin pour qu’il affiche le contenu avec IE8...

    • IE 8 n’arrive pas à faire fonctionner le lexteur PDF.js ?? (je n’en ai pas de version pour tester).

      Il semble que ça fonctionne avec IE10 (pour IE9 aucune idéee).

      Une option serait peut être de rajouter des commentaires conditionnels dans le modèle. Pour IE<10, on place dans l’iframe directement le PDF, sinon on inseère dans l’iframe le lecteur PDF.js

      Cela résoudrait-il une partie du problème ?

    • Oui IE8 n’arrive pas à faire fonctionner le lecteur PDF.js :(
      Depuis hier je suis sur les modifications, mais je n’arrive toujours pas ! J’ai essayé de voir vos suggestions sur l’iframe, mais je ne sais pas sur quel fichier exactement il faut toucher à cet iframe(lecteurpdf.hmtl ou media_pdfjs.html ?)

      merci encore

    • En fait il faudrait modifier les deux avec des commentaires conditionnels (http://www.alsacreations.com/astuce/lire/48-commentaires-conditionnels.html). Je peux m’en charger ce week end. Il faudrait juste vérifier avant comment se comporte IE si dans l’iframe on renvoie directement le lien vers le PDF (au lieu du lien vers le viewer). Si tu as l’occasion de tester cela.

    • Au fait une solution qui marche avec IE mais au détriment d’un recours Google (et donc tout ce qui suit en terme de collecte de données) : Plugin Google Viewer

    • Re bonjour,
      Au fait j’ai essayé tous ces astuces, mais il n’y a aucune qui marche, le plugin Google Viewer ne pourrait pas fonctionner chez moi car je développe un intranet, donc pas accès à internet :(
      Pour les commentaires conditionnels, je ne suis pas pro, mais je les ai rajouté selon différentes façons(avant et après l’iframe par exemple), mais ça ne fonctionne pas !! si t’avais eu le temps de voir quelque chose...

      merci encore

    • Correction effectuée avec un peu de retard. Les commentaires conditionnels sont implémentés dans la version 0.3.0

      Cordialement

    Répondre à ce message

  • AlexandreW

    Bonjour

    Très bonne extension pour Firefox et merci de vous en occuper.

    Je rencontré un petit problème, et impossible de trouver la solution.
    J’ai coché la case « retenir » quand j’ai refusé qu’un PDF se lise en mode présentation et depuis, impossible de modifier mon choix et donc je n’ai plus de mode présentation.

    Je ne sais pas où aller pour réinitialiser le lecteur pdf.js

    Merci

    Répondre à ce message

  • 1

    Bonjour

    Excellent plugin merci beaucoup

    Je l’ai mis en place sur un site à largeur fluide qui affiche mon pdf à 80% de la largeur.

    Quand un visiteur reduit sa page en largeur, dans la toolbar, ce sont les boutons « recherche » et les « fulscreen, print etc.. » qui disparaissent en premier, J’aimerais que la recherche s’affiche toujours quelque soit la largeur et que ce soit les boutons next/previous page qui disparaissent (bouton moins utiles car le scroll fonctionne).

    Est-ce possible ?

    spip 3.0.10

    merci

    • A priori, il vous faut surcharger le fichier lib/pdfjs/web/viewer.css Attention : peut-être vous faudra-t-il refaire votre surcharge lors d’une mise à jour du plugin.

    Répondre à ce message

  • 1

    Bonjour,

    Je reviens vers vous pour deux petites questions.
    Je syndique des site, en article complet.

    Or les fichiers pdf sur le site original, intègre mon site au format « Binary Data »

    Est-il alors possible de :

    1) les faire convertir en pdf automatiquement,
    2) encore mieux, d’appliquer une extension du type de la balise lecteurpdfXX ?

    Sinon, pour les fainéant, une option "mettre tous les pdf en lecteur pdf automatique est-elle envisageable ?

    Merci !
    Nico

    • J’avoue ne pas comprendre la question. Moyen d’être plus précis ?

    Répondre à ce message

  • 1

    Bonjour et merci de ce plugin.

    Pour moi (Spip 2.1.19), pdfjs marche impec sur google chrome et IE mais pas sur Firefox (20).. J’ai en effet le message suivant :
    Fatal error : Call to undefined function lang_dir() in /.../.../www/ecrire/inc/filtres.php on line 1954

    cette ligne correspond à : $voulue = lang_dir() ;
    dans la fonction : function direction_css ($css, $voulue=’’)

    Auriez-vous une idée pour m’aider ou m’orienter ?
    Merci.

    • Bonjour,

      il est difficile de pouvoir répondre sans plus de détails ou un lien de test. L’erreur soulevée concerne une fonction du core concernant les fichiers CSS.

      En premier lieu, je vous conseille de mettre à jour SPIP en 2.1.21 et de vider le cache.

      Cordialement

    Répondre à ce message

  • 1

    Bonjour,
    je pense que ce script est incompatible avec http://contrib.spip.net/Galleria-fr , voilà ce que me renvoi le cadre du pdf :

    Fatal error : Call to undefined function : url_absolue() in /mnt/113/sdb/d/5/mon.site/plugins/galleria/head.php on line 17

    la ligne 17 c’est l’appel du javascript (galleria-1.2.5.min.js)

    bizarrement quand je vide le cache, le pdf apparait mais quand j’y retourne plus tard rebelote ...

    • Bonjour,

      d’après votre message d’erreur, il y a un problème PHP dans Gelleria. A indiquer du côté de ce plugin.

      Bien cordialement

    Répondre à ce message

  • 4

    Bonjour,

    Certains textes (notamment les titres) ne sont pas affichés correctement avec le lecteur, alors qu’ils le sont en local.

    Qu’est-ce qui pourrait provoquer ce problème ?

    Répondre à ce message

  • 1

    BONJOUR

    savez vous comment faire pour ouvrir les documents en PDF et non plus en JS VIEW ??? MERCI

    Répondre à ce message

  • 3

    Bonjour,
    Tout d’abord merci pour ce plugin.
    Cependant si le cadre s’affiche, je n’arrive encore à l’utiliser.

    J’ai trois petites questions :

    1) Est-il possible d’utiliser ce plugin pour un pdf stocké sur un autre site (à savoir sans télécharger le document sur le site).

    2) Peut-on utiliser via CKeditor ?
    Dans « Options de conversion » > ’Balises SPIP à autoriser dans CKEditor" (là où figure : docXX ;embXX ;imgXX), il m’est impossible de rajouter « ‪lecteurpdf‬XX »

    3) Par hasard, est-il possible dans une seule liseuse de mettre les 3 ou 4 docs pdf qui figurent sur l’article ?

    Un grand merci,
    Nico

    • 1) Est-il possible d’utiliser ce plugin pour un pdf stocké sur un autre site (à savoir sans télécharger le document sur le site).

      Le viewer fourni par défaut dans le plugin (http://zone.spip.org/trac/spip-zone/browser/_plugins_/pdfjs/pdfjs.html) nécessite que le document soit installé dans SPIP et s’il s’agit d’un fichier distant, une copie locale est effectuée (via le filtre |copie_locale).

      Vous pouvez installé votre propre viewer ou adapté celui fourni en vous basant sur http://mozilla.github.com/pdf.js/web/viewer.html

      2) Peut-on utiliser via CKeditor ?
      Dans « Options de conversion » > ’Balises SPIP à autoriser dans CKEditor« (là où figure : docXX ;embXX ;imgXX), il m’est impossible de rajouter »‪lecteurpdf‬XX"

      Je suis incapable de répondre à cette question. Il faudrait la poser dans les forums de discussion de CKeditor.

      3) Par hasard, est-il possible dans une seule liseuse de mettre les 3 ou 4 docs pdf qui figurent sur l’article ?

      Le viewer fournit ne le permet pas. Il est basé sur celui du projet (http://mozilla.github.com/pdf.js/web/viewer.html). C’est peut-être possible moyennant du développement : création d’une interface permettant de choisir dans une liste de documents et ajout du javascript nécessaire.

    • Merci pour ces réponses !

      2)Bon finalement après un petit vidage de cache la balise « ‪lecteurpdf‬XX » fonctionne pour ckeditor.

      Dernière petite question : est-il possible de centrer le doc. pdf au sein de la page de l’article ?
      La balise <lecteurpdfXX|center>n’a pas l’air efficiente(?)

      et encore merci pour ce plugin !

    • Devrait être réglé par la version 0.2.2 du plugin

    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