SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

96 visiteurs en ce moment

fontsizeup fontsizedown
[12 commentaires]

Le plugin FreepapeR

visualiser les fichiers PDF dans les pages WEB

mardi 22 juillet 2008, par franckGre

1 vote


I - Pourquoi FreepapeR


Pagegangster, Motion Paper, scribd.com, myplick.com..... tous ces sites proposent la publication en ligne de vos documents PDF. Il faut pour cela au préalable uploader ses documents sur les serveurs du prestataire choisi, un peu à la manière des YouTube ou Flickr.

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.

II- Implantation du plugin


Extraire le contenu de l’archive freepaper-spip.0.5.0.zip, dans le dossier plugins de votre installation SPIP.

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 :

<script type="text/javascript" src="#CHEMIN{javascript/swfobject.js}"></script>
par exemple, si la librairie swfobject est dans le répertoire « /javascript » de votre installation SPIP.

III- La balise #FREEPAPER


Lorsque le plugin est activé, on dispose de la balise #FREEPAPER qui liste tous les documents « pdf » joints à l’article et intègre pour chacun d’eux un lecteur FreepapeR dans la page, avec les valeurs par défaut.

Les paramètres suivant permettent de modifier le comportement par défaut :

#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

#FREEPAPER{largeur=300}{hauteur=400}{trace=true}

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).


IV - Le modèle contentfreepaper


Lorsque le plugin est activé, il permet l’utilisation du modèle contentfreepaper dans le corps des articles.

La syntaxe complète est :

<contentfreepaperxxx                 ou xxx est l'id du document PDF à visualiser
|hauteur=(nbPixels)                 -> par défaut 600
|largeur=(nbPixels)                 -> par défaut 800
|trace=(true ou false)                -> par défaut false
>

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.

 

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 5, des solutions alternatives sont décrites en 6.


V - Installer la boîte à outils swftools


Se rendre sur le site http://www.swftools.org/download.html et récupérer l’archive :

swftools-yyyy-mm-dd-vvvv.rar pour un système windows
swftools-yyyy-mm-dd-vvvv.tar.gz pour un système linux

1. Windows
Extraire les fichiers de l’archive, puis placer l’exécutable pdf2swf.exe sur le serveur, à la racine du dossier du plugin FreepapeR.

2. Linux
Extraire les fichiers de l’archive, et les placer sur le serveur dans un dossier temporaire.
Se connecter par SSH au serveur (cela suppose d’avoir un accès SSH), se rendre dans le dossier temporaire ou l’on a extrait les fichiers, puis lancer les commandes :

./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.

3. Puis dans les deux cas
Ouvrir le fichier php/pdf2swf.php et vérifier le contenu de la variable pdftoolsPath pour qu’elle indique le chemin vers l’exécutable pdf2swf, par exemple :
$this->pdftoolsPath='../';        //linux
ou
$this->pdftoolsPath='..\\';        //windows

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.


VI - Je ne peux pas installer swftools sur mon serveur


Sans accès SSH, point de salut, on ne peut fabriquer le binaire pdf2swf.

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 :

pdf2swf -t -o documentAVisualiser.pdf.swf documentAVisualiser.pdf

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.


VII- pdf2swf pour les serveurs 1&1

Ce binaire fonctionne pour les hébergements du fournisseur d’accès 1&1 :
PNG - 2.6 ko
pdf2swf pour les serveurs 1&1


VIII- Erreur rencontrées lors de la conversion


EXEC RETURN VALUE : 0 -> tout s’est bien déroulé
EXEC RETURN VALUE : 1 -> le fichier pdf2swf n’a pas été trouvé
EXEC RETURN VALUE : 6 -> fichier PDF non lisible
EXEC RETURN VALUE : 11 -> erreur de segmentation (pdf2swf invalide)
EXEC RETURN VALUE : 126 -> pdf2swf a été trouvé mais n’est pas exécutable
EXEC RETURN VALUE : 127 -> le fichier pdf2swf n’a pas été trouvé

 

 

Creative Commons License 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.

Voir en ligne : Le dedans du bocal

Retour en haut de la page

12 Messages de forum

Voir toute la discussion

Pages 1 | 2

  • Répondre à ce message

    11 avril 01:28

    Bon, je progresse lentement ...

    Pour éviter le message d’erreur 404 de mon post précédent il faut installer le plugin dans /plugins/ et non /plugins/auto/ qui correspond à l’installation automatique du plugin avec SPIP2.

    Par ailleurs, j’avais zappé l’installation du fichier swfobject.js. Mais ne pourrait on pas l’inclure dans le plugin ainsi que son appel ?

    Ensuite je fichier swf ne c’est pas généré sur le serveur (ubuntu) malgès la déclaration conforme aux posts précédents.

    Tant pis, je crée le fichier à la main. Attention la commande est pdf2swf -t -o documentAVisualiser.pdf documentAVisualiser.pdf.swf cad qu’il faut mettre le fichier source avant le fichier de destination contrairement à ce qui est indiqué dans l’article.

    C’est maintenant presque bon : les pages du document s’affichent dans le fenêtre ... sauf que dans un premier temps, elles défilent à toute vitesse et qu’il faut que le visiteur tape un numéro de page pour que cela s’arrête.

    Encore quelques progrès sur ce plugin ... Courage aux programmeurs ;-)

  • Répondre à ce message

    13 mars 22:17 , par livier

    Erreur , mon navigateur me réponds :

    Ouverture de plugins/freepaper/php/freepaper_spip.php

    Erreur: 404 Not Found

    alors qu’il m’affiche la zone grise ou je m’attend à voir l’aperçus

  • Répondre à ce message

    5 mars 02:55 , par livier

    Je remet ici la réponse que j’ai reçus par courriel privé, à toutes fins utiles pour tous.

    #2) En effet, si le binaire est situé dans le répertoire /usr/bin/ alors il faut régler la variable : $this->pdftoolsPath='/usr/bin/';

    #3) Pas du tout. Les fichiers "pdf2swf.php4.php" et "pdf2swf.php5.php" sont les copies de sauvegardes du fichier "pdf2swf.php", le premier pour un serveur qui propose php 4 et le deuxième pour un serveur qui propose php 5.

    #4) Dans un futur (espérons) proche seul le fichier .swf sera à mettre à jour. Les ajustement n’aurons alors plus à être refait.

    #6) Aujourd’hui, la balise #FREEPAPER extrait les articles contenus dans l’article. Le modèle est lui utilisable partout Il est possible d’écrire de nouvelles balises calquées sur la balise #FREEPAPER (dans le dossier /modeles du plugin ) et permettant d’afficher des documents PDF dans des contextes très différents de la boucla article..

    Espérant avoir répondu à tes questions. - Franck

    J’ai pas eu le temps de m’y remettre, d’autant plus que j’aurais voulu utiliser la balise dans une boucle DOCUMENT et directement dans un squelette. Merci pour ton courriel, je met tes réponses ici pour les retrouver plus facilement et en faire profiter tout le monde ;-)

  • Répondre à ce message

    12 février 17:29 , par livier

    Plugin Version : 0.7.0 — stable Quelques questions sur l’installation ...
    - je travaille sur ubuntu et j’ai swftools dans mes dépots, l’installation est donc simple :-)
    - je dois mettre $this->pdftoolsPath='/usr/bin/'; dans le fichier /freepaper/phppdf2swf.php du plugin ???
    - mais il y a aussi un fichier /freepaper/phppdf2swf.php4.php et /freepaper/phppdf2swf.php5.php je dois y toucher aussi ?
    - à la prochaine version du plugin ces ajustements seront cassés ! Il me semble donc qu’on est dans une version "en développement".
    - une petite page de config avec l’explication nécessaire serait bienvenue pour une version stable à venir ... On encourage et on remercie les développeurs pour leur travail ;-) ...

    - ensuite ... l’article parle de mettre #FREEPAPER dans un article. Je suppose qu’on peut aussi le mettre dans n’importe quelle boucle appelant un document pdf : dans une rubrique par exemple ou un appel direct dans une boucle (DOCUMENTS) ?

  • Répondre à ce message

    3 janvier 03:07 , par franckGre

    Bonjour,

    Il est normal que le logo "Adobe Flash Player" apparaisse dans la partie administration du site. Par contre si ce logo est encore visible dans le site public, c’est très certainement que le fichier "swfobject.js" n’est pas connu dans la partie "head" du squelette de la page article (ce fichier javascript est utilisé pour remplacer le logo par le lecteur FreepapeR).

    Voir la documentation :

    2) Implantation du plugin

    Extraire le contenu de l’archive freepaper-spip.0.5.0.zip, dans le dossier plugins de votre installation SPIP.
    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 :

    <script type="text/javascript" src="#CHEMIN{javascript/swfobject.js}"></script>

    par exemple, si la librairie swfobject est dans le répertoire « javascript » de votre installation SPIP.

  • Répondre à ce message

    30 décembre 2008 07:24

    bonjour, je n’arrive pas à faire fonctionner freepaper, j’utilise freecontent dans le corps de l’article mais à chaque fois j’ai le logo d’adobe flash player dans la partie privée et publique également quelqu’un peut-il m’aider ? je galère et j’ai énormément besoin de ce plugin...

  • Répondre à ce message

    17 août 2008 13:34 , par franckGre

    Il est certain que la difficulté de la chose est de fabriquer (de se procurer) le binaire pdf2swf.

    Il suffit (mais ce n’est pas si facile) de trouver quelqu’un qui a un hébergemnt chez OVH avec accès SSH, de lui demander de fabriquer le binaire puis de le récupérer.

  • Répondre à ce message

    15 août 2008 19:39 , par Xav

    Grand dommage ! Mon hébergement chez OVH ne me permet pas le SSH (je suis en 60GP) donc pas possible d’utiliser ce plugin. (car la formule de secours est trop lourde pour mes utilisateurs...) Ce petit mot dans l’espoir qu’un jour une solution plus universelle voit le jour.

    En tout cas bravo pour ce plugin, il est très intéressant.

  • Répondre à ce message

    10 août 2008 18:55 , par franckGre

    Bonjour,

    Le plugin a été modifié : il n’est plus fait usage des sessions.

    Les visionneuses implantées dans une page gardent cependant toujours un identifiant unique.

  • Répondre à ce message

    8 août 2008 00:15 , par franckGre

    Bonjour, et désolé de réagir si tard, je n’avais pas vu le message. J’utilise effectivement des variables sessions pour numéroter les objets FreepapeR.

    Le problème persiste-t-il toujours ?

    En ce qui me concerne, je n’ai jamais eu de problème en local. J’ai utilisé 2 config : Apache + php installé main, ou alors xampp (qui est une sacré alternative à easyphp)..

Pages 1 | 2

Répondre à cet article

Retour en haut de la page

Ça discute par ici