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
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');
Discussions par date d’activité
62 discussions
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
Bonjour,
Pour ma part migration de spip 3.2.2 vers spip 4.0.5 en php 8.0.
Plugin pdf.js 1.0.0
Un warning s’affiche (mais pas toujours) dans le cadre en haut du lecteur.
J’ai l’impression que le message disparaissait lorsque que je « touchais » au paramètres de langues (perso et/ou du site) dans la config partie privée.
Solution immédiate retour en php 7.4.
Cordialement.
Répondre à ce message
En cherchant à optimiser la rapidité d’affichage de mon site, je m’aperçois que le javascript de PDF.js semble assez gourmand en ressources, et se charge sur toutes les pages.
Ne serait-il pas possible de ne le charger que dans les pages « articles » par exemple ?
Voire, que pour les articles ayant un fichier pdf attaché ?
Voire même que lorsqu’il y a un fichier pdf affiché avec la balise « emb » ?
Merci.
Répondre à ce message
Bonjour
Je n’ai pas accès restreint d’activé et pourtant j’ai un fichier manquant qui s’affiche
L’article de test se situe ici
Je ne comprends pas pourquoi ??
Quelqu’un peut il m’aider ?
Cordialement
rémi
Bonjour,
Je me permets de répondre à ce message tardivement, car j’ai eu le même souci et ai trouvé pourquoi. Donc cela pourra servir à d’autres.
En fait le PDF ne s’affiche correctement que si l’adresse commence par https.
Cela se vérifie sans problème avec l’article de test ci-dessus :
Article avec adresse http
Article avec adresse https
Donc il faut ensuite trouver une solution pour forcer le https pour le site et cela je n’ai pas encore trouvé.
Cordialement,
Virginie
Répondre à ce message
bonjour,
y a t-il un moyen de choisir comment afficher le pdf par defaut .
page_reelle, page_entiere, automatique
merci
Salut,
ici : https://github.com/mozilla/pdf.js/wiki/Viewer-options
de ce que je comprends page réelle zoom=100 ensuite l’on peut choisir le numéro de la page #page=X , l’affichage ajusté à la largeur zoom=page-width , la hauteur idem, zoom=page-fit à la page entière ou zoom=auto.
L’appel de la « rédaction » :
<embXX|zoom=page-fit|#page=3>
ou lien direct
https://monsite.fr/spip.php?page=pdfjs&id_document=XXpage=2&zoom=auto
En fait l’ajout d’options via l’appel du modèle ne passe pas.
J’héritais des paramètres passés dans l’appel par l’adresse.
<embXX|> et la taille et c’est tout !
Sinon la taille réelle c’est
zoom=page-actual
utilisation :
https://monsite.fr/spip.php?page=pdfjs&id_document=XXpage=1&zoom=page-actual
Répondre à ce message
Bonjour,
J’utilise le lecteur avec spip 3.2.11, visible ici en haut de page.
Testé sur Debian 10 + Firefox 78.15.0esr (64 bits) et Android 7.0 + IceCatMobile 68.4.2 et TintBrowser 1.8
J’aimerais laisser le contrôle du zoom au navigateur lors de l’affichage plein écran et en particulier pour l’affichage sur mobile qui est trop petit dans ce mode pour une lecture acceptable.
Pour le moment c’est la bataille de priorité entre le zoom des modes plein écran de l’intégration js et du navigateur. Il en résulte un comportement alambiqué.
[sur desktop]
1- En mode plein écran de l’intégration js :
les contrôles de l’intégration ne s’affichent pas et le zoom (Ctrl (+)/(-)) est sans effet en apparence MAIS en réalité (Ctrl -) agit sur l’affichage du navigateur et est visible au retour du mode plein écran js alors que (Crtl +) est sans aucun effet même après des (Ctrl -).
2- En mode affichage normal comme pour le plein écran navigateur (F11) et un affichage « normal » de l’intégration :
les contrôles zoom de l’intégration js agissent mal selon moi :
Ctrl (-) agit sur le navigateur alors que Ctrl (+) agit sur l’intégration js. Il en résulte un affichage inutilisable et au retour un affichage pdf zoomé ++ dans l’intégration dans une page web dézoomée - -.
[sur mobile]
En mode plein écran de l’intégration js : les contrôles de l’intégration ne s’affichent pas et le zoom « aux doigts » (+)/(-) est sans effet (testé sur Android + IceCatMobile et TintBrowser)
Ceci étant, merci et bravo pour ce bel outil.
En espérant pouvoir contribuer à l’améliorer, Anthony.
Répondre à ce message
Bonjour
Pour préparer la venue de Spip 4, je fais des essais sous Spip 4.0.0-alpha.
Le plugin pdf.js ne « passe » pas, même après avoir changé les bornes de compatibilité.
Si d’aventure quelq’un·e savait si ce plugin sera actualisé pour Spip 4...
Merci.
1-tu remplace 3.2.* par 4.0.* pour voir le plugin dans
dans plugin.xml
on obtient
dans paquet.xml
on obtient compatibilite=« [2.0.0 ;4.0.*] »
2- tu renommes le fichier emb_pdf du plugin ou mieux tu le copie en le renommant sous le dossier modeles de ton dossier squelettes en file_emb_pdf
et cela fonctionne en faisant <embxx|center> ou <docxx|center>
cela fonctionne aussi avec
<lecteurpdfxxx>
Répondre à ce message
Bonjour,
je suis en 3.3 dans la dist de spip.css il ya
ce qui fait que si on insere un pdf center avec largeur=80 elle est ramenée a 100%
et si on met right ou left le modele emb_pdf met le fichier à 33% quelle que soit la largeur demandée.
peut être spip 3.3 definitif ou le plugin reglera le pb en attendant
dans emb_pdf copie du modele du plugin j’ai rajouté « style="max-width :#ENVlargeur" » pour left et right
est devenu
et j’ai enleve le
width:100%
dans une copie de spip.css de.spip_documents_center { clear: both; display: block; width: 100%; }
est devenu
.spip_documents_center { clear: both; display: block; }
Répondre à ce message
Bonjour,
Tout d’abord, bravo pour cet excellent plugin.
Fonctionnement sans aucun problème.
J’aurais une question assez spécifique, quand je lance ma page, l’affichage se fait en zoom automatique par défaut, y a t’il un moyen de forcer le mode zoom « pleine largeur » en mode par défaut.
J’entend par là un moyen simple, sinon je m’en contenterais.
Merci d’avance
Répondre à ce message
Merci pour ce plugin qui affiche les pdf sur tous les supports, android inclus !
Cerise sur le gateau, en imposant la largeur en % (par exemple |largeur=100% ) la fenêtre d’affichage est responsive en largeur. Et ceci sans faire faire un aller-retour du document pdf jusqu’aux serveurs de google si on utilise le plugin « google viewer » : quelques watts de gagnés, c’est bon pour la planète !
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 :
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.
Suivre les commentaires : |