Visualiser les fichiers PDF dans les pages WEB
samedi 29 novembre 2008, par Franck
Cela ne pose pas de problème dans la majorité des cas. Cependant, on ne souhaite parfois pas que ses documents deviennent publics, qu’ils soient analysés par des robots ou encore que de la publicité y soit inséré.
FreepapeR aussi permet la visualisation en ligne de fichiers PDF, mais il s’installe sur son propre serveur et les documents que l’on affiche ne quittent jamais le domaine, ne sont jamais altérés, sont toujours disponibles...
Le principe est le suivant :
Le document à visualiser est déjà situé sur le serveur
Il est converti grâce à la boite à outil (GPL) swftools .Ainsi, on obtient un nouveau fichier, qui est la version SWF du fichier PDF original
On utilise un programme SWF pour naviguer dans le fichier généré
Remarque : Cette méthode de présentation d’information ne permet pas, à la différence de l’écriture textuelle le référencement par les moteurs de recherche, le document étant « caché » au monde par le lecteur SWF. Il y a toujours moyen de trouver des artifices tels qu’insérer dans la page du contenu textuel caché, mais cela est néanmoins à déconseiller.
Bien entendu, il faut idéalement pouvoir exécuter des routines de la boite à outils swftools sur le serveur, ce qui est sans doute le point le plus délicat. Mais nous verrons par la suite des méthodes alternatives permettant de contourner ce point, notamment dans le cas des hébergements mutualisés sans accès SSH.
L’activer via l’administration des plugins. (Consulter la documentation officielle pour plus de détails.)
Dans ce plugin, on utilise l’utilitaire javascript d’installation d’objet Flash swfobject 2.0, disponible à l’adresse suivante : http://code.google.com/p/swfobject/
En conséquence, il conviendra d’intégrer ce fichier dans la partie < head> des pages qui doivent utiliser le plugin :
par exemple, si la librairie swfobject est dans le répertoire « /javascript » de votre installation SPIP.
Les paramètres suivant permettent de modifier le comportement par défaut :
#FREEPAPER{xmlData=nomFichierXml} nom du fichier xml de configuration (situé dans le sous-répertoire xml du plugin, nom par défaut : freepaper.xml
#FREEPAPER{largeur=nbPixels} largeur de la page FreepapeR. Défaut : 600
#FREEPAPER{hauteur=nbPixels} hauteur de la page FreepapeR. Défaut : 800
#FREEPAPER{trace="true" ou "false"} activation du mode verbeux. Défaut : false
Ainsi
implante un lecteur FreepapeR de largeur 300px, de hauteur 400px avec le mode trace activé (utile en phase de création des squelettes pour déceler les problèmes éventuels). Si le fichier xml/freepaper.xml existe, alors les paramètres qu’il définit sont utilisés pour modifier l’aspect/le comportement du lecteur.
implante le même lecteur que précédemment mais en utilisant les définitions du fichier de configuration xml/freepaperSample.xml
La syntaxe complète est :
Remarque : Dans l’espace d’administration, les lecteurs FreepapeR implantés par modèle sont représentés par l’image « Get FLASH PLAYER ». Cela est normal. On visualise ainsi qu’il y a à cet endroit de l’article un objet implanté, mais voir son contenu n’a pas d’intérêt ici.
On obtient dans la page publique du site un lecteur FreepapeR avec le document à visualiser chargé :

Enfin presque !
Pour que tout se déroule comme précédemment décrit, il faut encore installer la boîte à outils SWFTOOLS qui va prendre en charge la conversion du fichier PDF en SWF. L’installation est décrite en V, des solutions alternatives sont décrites en VI.
swftools-yyyy-mm-dd-vvvv.rar pour un système windows
swftools-yyyy-mm-dd-vvvv.tar.gz pour un système linux
./configure (ayant auparavant réglé le bit d’exécution de ce fichier à 1)
Lorsque le traitement est terminé, lancer
make
On peut s’arrêter là, puis copier le binaire pdf2swf depuis le dossier ’src’ pour le placer à la racine du dossier du plugin FreepapeR. Bien penser à s’accorder les droits de lecture et d’exécution sur ce fichier.
Dans le dossier qui contient un PDF à visualiser, le système doit pouvoir créer un fichier avec l’extension pdf.swf : il faut donc avoir les droits en lecture et en écriture dans ce dossier.
Il y a des pistes alternatives :
J’ai trouvé un binaire pour ma distribution Linux
Dans ce cas, il suffit de placer ce binaire à la racine du dossier du plugin FreepapeR, puis de régler la variable $this->pdftoolsPath, comme décrit en 5-3.
Je télécharge le binaire en local, je converti les PDF en local, puis je place les fichiers sur le serveur qui héberge mon site SPIP.
On procède comme décrit en 5-1 puis 5-2, mais en installant pdf2swf en local.
Il faut ensuite convertir en local les fichiers PDF à visualiser. La ligne de commande pour produire le fichier swf est la suivante :
si le fichier PDF à convertir s’appelle documentAVisualiser.pdf par exemple.
Pour terminer, il faut joindre le fichier pdf à l’article requis, mais aussi placer sur le serveur le fichier converti pdf.swf (et dans cet ordre !).
Pour cela, il y a 2 possibilités :
Soit on upload par ftp dans le dossier IMG/pdf le fichier converti *.pdf.swf correspondant au fichier pdf joint à l’article (donc de même préfixe).
Soit on joint le document pdf.swf à l’article grâce à l’outil "Ajouter un document" de SPIP.
En effet, Lorsque le plugin SPIP FreepapeR s’initialise et cherche à restituer un fichier PDF joint à l’article :
s’il existe un fichier « pdf.swf » situé dans le dossier IMG/pdf et qui est plus récent que le fichier « pdf », alors le comportement habituel est d’afficher ce document « pdf.swf ».
Cependant, si le binaire pdf2swf n’est pas installé sur le serveur, alors le document « pdf.swf » est aussi recherché dans le dossier IMG/swf.

Cette fenêtre disparaît dès que l’utilisateur clique sur l’image « Back to FreepapeR ».
indique au système d’aller chercher le fichier de configuration « freepaperSample.xml » dans le dossier « xml ».
Le fichier de configuration xml est constitué comme suit :
Pour ne pas modifier la valeur par défaut d’un des attributs, il suffit de l’omettre ou de régler sa valeur à "".
Pour surcharger les images qui définissent un bouton, il faut au moins définir l’attribut upImg. En effet, il est utilisé pour définir la zone de clic du bouton. De plus, seules ses zones opaques sont considérées comme actives. Toutes les images du bouton dont l’attribut n’est pas défini dans le fichier XML seront dessinées avec l’image définie pour l’attribut upImg. Si upImg n’est pas défini, alors les images du bouton par défaut seront utilisées. Pour « cacher » un bouton, il suffit de définir uniquement l’attribut upImg et de lui donner une valeur d’image inexistante, par exemple " " (caractère espace).
Avec les éléments fournis dans le fichier freepaper.0.7.0.zip, on obtient l’interface suivante :


Au démarrage, le document est affiché pour occuper toute la hauteur, la couleur du fond est d2f7c9, la couleur du contour est 5c954b, l’épaisseur du contour est de 4 pixels.
Ouverture du document selon un des 4 modes suivants :
La fonction Zoom a été améliorée : le zoom est maintenant effectué par rapport au point situé au centre de la visionneuse
Ajout de la fonctionnalité de visualisation « pleine page » (la visionneuse occupe tout l ’espace disponible dans le navigateur)
Le plugin SPIP FreepapeR est mis à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l’Identique 2.0 France.
Utilisation du plugin SPIP FreepapeR version 0.7.0 (PDF - 561 ko)
Installation du plugin SPIP FreepapeR 0.7.0 (Zip - 257 ko)