Article PDF

Présentation d’un plugin fournissant une version PDF de l’article en cours

Présentation

Le plugin article PDF est encore développé sur la zone. Il est parfaitement fonctionnel mais possède peut être encore quelques bugs. Il permet de convertir votre article sous forme de fichier PDF. Vous pouvez alors à loisir l’enregistrer ou l’imprimer.

Le fichier pdf généré gère les liens html ainsi que les images de l’article.

Installation

L’installation se déroule ensuite comme pour tous les autres plugins, cf. http://www.spip.net/fr_article3396.html.

Une fois le plugin activé vous disposez d’une balise #ARTICLE_PDF à placer dans votre squelette sous la forme #ARTICLE_PDF{id_article}, et d’une balise #RUBRIQUE_PDF à placer sous la forme #RUBRIQUE_PDF{id_rubrique}.

Format PDF

La balise génère alors un bouton qui vous permet d’afficher la version au format pdf de l’article

Il est aussi possible d’ajouter, dans la partie head du squelette html d’article, <link rel="alternate" type="application/pdf" href="#URL_PAGE{article_pdf}|parametre_url{id_article,#ID_ARTICLE}" /> et/ou <link rel="alternate" type="application/pdf" href="#URL_PAGE{rubrique_pdf}|parametre_url{id_rubrique,#ID_RUBRIQUE}" />, afin de lier sémantiquement la version pdf à l’article en cours.

Nota : ce plugin nécessite d’avoir la bibliothèque image GD2 sur votre serveur (ce qui est souvent le cas).

installation SPIP 3

Sous SPIP 3, il est nécessaire d’installer la librairie FPDF dans le répertoire /lib/h5c1accba-fpdf17 (le créer au besoin si l’installation automatique échoue)

Limites

Le plugin a quelques limites, notamment le générateur de pdf, qui n’accepte pas de texte en utf-8 en entrée, ce qui nécessite une conversion préalable.

Personnalisation

Vous pouvez remplacer l’icône du bouton article pdf en remplaçant le fichier plugins/article_pdf/img_pack/article_pdf.png par le votre

Quelques icônes alternatives

Vous pouvez aussi adapter la page PDF générée, en modifiant des copies des squelettes d’origine article_pdf.html et rubrique_pdf.html dans votre propre dossier ./squelettes/.

Auteurs du plugin :


-  Paul Sanches
-  Aquinatus
-  Cédric Morin

Ajouts

Cette documentation est sommaire et pourrait être enrichie.

Discussion

183 discussions

  • 4

    Bonjour,

    j’ai utilisé ce plugin pour produire un pdf avec les textes de tous les articles d’une rubrique, je me suis débrouillé pour que ça fonctionne mais j’ai pas mal galéré parce que je suis un peu neu-neu... mais bon, une question me reste : comment ajouter une $variable dans le fichier rubrique_pdf.html pour qu’elle soit utilisable dans /pdf/lib_pdf_spip.php

    (si j’arrivais à le faire j’agrémenterais cette page de doc...)

    merci,

     ;o)

    • Pourrais tu préciser ta demande, je ne vois pas ce que tu cherches à faire

    • oui : en utilisant le squelettes rubrique_pdf.html tel qu’il est, on a toutes les infos de la rubrique, c’est super et parfait, et on gratte dans pdf/lib_pdf_spip.php pour affiner la présentation...

      mais si on veut modifier ces infos pour avoir en plus, par exemple, tous les titres des articles, comment puis-je ajouter une variable dont la valeur sera affichée dans le document pdf...

      en faisant dans rubrique_pdf.html

      $titres_articles = '
      <BOUCLE_articles(ARTICLES){id_rubrique}{par titre}{' - '}>
      	#TITRE
      </BOUCLE_articles>
      ';

      je ne récupère rien dans pdf/lib_pdf_spip.php qui aurait pu être la variable
      $titres_articles

      Mes essais sont pas convaincants, mais je m’y prend peut-être mal...?

      merci !

    • n’utilisant pas rubrique_pdf, il a fallut que je me plonge un peu dans le code,
      Il suffit que tu déclares ta nouvelle variable (en plus des modifs que tu as déjà faites) dans la fonction function GenerateTitlePage() ligne 66 pour la page de garde ou la fonction function GenerateText() ligne 170 pour la 2e page.
      modif à effectuer :

      function GenerateText()
      {
       	global $texte, $chapo, $ps, $notes, $titres_articles ;

      j’ai fait un test rapide de mon côté et sa fonctionne sans problème.
      c’est vrai que c’est un manque, la page rubrique_pdf mériterait d’être retravailler, si le coeur t’en dit n’hésite pas à commiter ou à m’envoyer tes fichiers modifiés

    • oui, super, ça marche... je pense que c’était un problème de cache... ?

      on peut tout aussi bien ajouter une fonction à côté de GenerateText() qui sera utilisée pour notre variable perso...

      en fait l’idéal serait d’avoir le choix de plusieurs modèles, je ne veux pas refaire ce qui a été fait et qui correspond à une utilité... on pourrait envisager plusiquers modèles à inclure qui appelleraient chacun un fichier différent pour une mise en page et squelettes différents ?

      on peut aussi faire une petite explication pour les modèles à inclure par les rédacteurs :

      <rubrique_pdf|id_rubrique=9>

      par exemple...

    Répondre à ce message

  • 2

    Bonjour,
    Ce plugin marche très bien, mais comment faire pour faire apparaître le(s) noms(s) des auteurs sur le document PDF ?
    Merci d’avance

    Philippe G.

    • Je me permets de reposer la même question : comment faire apparaître le nom des auteurs de l’article sur le document PDF ?

    • Tu as bien fait de re-poster j’avais loupé ton premier message.
      Le non affichage des auteurs est un bug je vais essayer de commiter ça rapidement en attendant tu peux faire les modif toi même :
      -  dé-commente la ligne 25 du fichier /article_pdf.html
      -  dans le fichier /pdf/lib_pdf_spip.php ligne 137 ajoute :

      if ($auteur) 
      	{
      		
      		$this->SetXY(110,196);
      		$auteur = $this->unhtmlentities($auteur);		
      		$this->MultiCell(0,6,"Par : $auteur",0,'L',0);
      		
      	}

    Répondre à ce message

  • 8

    Bon, je n’ai pas de chance, ce plugin ne fonctionne pas sur mon site : j’ai une erreur qui me demande d’installer la librairie fpdf, alors qu’elle est installée.
    Avez-vous un tuyau ?
    Merci

    • Je précise : voici le message obtenu quand j’essaie d’activer le plugin article pdf :

      Impossible d’activer le plugin ../plugins/auto/article_pdf_2_0
      ◦Ce plugin nécessite la librairie h5c1accba-fpdf17
      à télécharger depuis http://www.fpdf.org/fr/download/fpdf17.zip et à installer dans lib/

      Quand je clique sur le bouton « télécharger », j’arrive à ça :

      erreur : impossible de charger http://www.fpdf.org/fr/download/fpdf17.zip

      J’ai donc téléchargé et installé manuellement la librairie par ftp, dans dossier /lib/fpdf
      J’ai essayé de la placer à la racine du site, dans le dossier du plugin article pdf, dans la dossier du plugin sarkaspip, mais je ne peux toujours pas activer le plugin.
      Pourtant, la lib est bien installée puisqu’elle apparaît dans la liste des librairies installée dans l’espace privé de spip.
      Merci

    • Essaye de placer le contenu http://www.fpdf.org/fr/download/fpdf17.zip dans le répertoire lib/h5c1accba-fpdf17 situé à la racine de ton site.

    • Merci, il y a des progrès, j’ai pu activer le plugin article pdf !!!

      Malheureusement, en cliquant sur le bouton en haut d’un article, j’obtiens ceci :

      FPDF error : 16-bit depth not supported : local/cache-TeX/0dcb2ce64af03517f3c366c6467f882c.png

       ???

    • est-ce que cela fait également ça avec des photos en jpeg ?
      De plus pour aider pourrais-tu préciser :
      -  ta version de spip
      -  la méthode utiliser pour générer les vignettes
      -  un lien qui permettrait de voir le pb in situ

    • Bonjour,
      ma version de spip est le 2.1.11
      la méthode pour les vignettes est gd2
      le site est là : http://maths.lallemand.free.fr/

      Je n’ai pas essayé avec des jpeg, mais les images latex générées par spip sont au format png et, apparemment, ce sont-elles qui posent problème.

      Merci

    • En fait, ça marche avec une image png sur cette page-ci.
      Mais ça ne marche pas avec les images latex : exemple.

    • En effet j’ai fait un test de mon côté et j’arrive au même résultat. J’ai bien peur de ne pas pouvoir t’aidé sur ce coup.
      Après quelques recherche, le problème est lié à la librairie fpdf qui ne gère pas les images png 16 bit.
      Regarde peut être du côté de cette contrib http://www.spip-contrib.net/Version-PDF-avec-SPIP2LaTeX ou alors poste un message sur la liste spip pour voir s’il est possible de générer les image latex dans un autre format.

    • Merci.
      J’ai posté un message sur le forum de fpdf pour voir si il y a une solution.
      Je reviendrai ici pour le signaler si c’est le cas.

    Répondre à ce message

  • 8

    sur un spip en version 2.1.10 , impossible d’afficher les images d’un article.
    J’ai a la place un lien du style :
    <code
    [http://monsite.fr/intranet/spip.php?action=acceder_document&arg=639&cle=e58ebcb2dcc7
    393f9c6f7c7fbc3933e11f081a62&file=jpg_image003.jpg]

    Et Quand je clique sur le lien, j’ai un message
    Erreur 404 - Ce document n’est pas disponible

    Une idée sur le problème

    • Bonjour,
      J’ajoute un petit complèment d’information :
      Les images de l’articles sont bien visibles lors de la consultation de l’article.
      Le lien n’apparait que dans le fichier PDF généré.

      Ce problème ne se présente que pour moi ?
      Ou d’autres personnes ont ce soucis ?

    • un vrai lien serai un plus pour aider à résoudre le problème

    • Bonjour,
      Je suis désolé, le serveur est sur un intranet inaccessible depuis internet...
      Mais je peux répondre aux points qui vous intriguent

    • Bonjour,
      J’ai toujours mon soucis d’images dans les pdf générés « à la volée ».

      J’ai coupé le plugin Zpip pour revenir au squelette de base, le problème reste le même.

      Dans mon article, si je fais clic droit, afficher l’image, on la trouve en :
      http://IP de mon Serveur/intranet/local/cache-vignettes/L300xH300/cds-dd0e1.jpg

      le lien généré dans le pdf est de la forme :
      [http://IP de mon Serveur/intranet/spip.php ?action=acceder_document&arg=2608&cle=4932c26516702c6348f41a958da49f
      af2986584a&file=jpg%2Fcds.jpg
      si je clique sur le lien, j’ai le message cité au debut :
      Erreur 404 - Ce document n’est pas disponible

      Comment est généré le lien dans le fichier PDF ?

      Version SPIP : SPIP 2.1.10 [17657]
      Version Article PDF : 0.4.5 - stable

      Je voulais supprimer le plugin Article PDF, mais des utilisateurs y ont prit goût pour les articles sans photo ...
      Alors maintenant faut que je trouve une solution !

    • quelques approfondissement pour essayer de cerner le problème :
      -  as-tu GD2 installé sur ton serveur
      -  spip gére-t-il la création des miniatures sur ton site
      -  quelle version de php sur ton serveur.

      Le fichier pdf est généré par ce fichier

      As-tu essayé l’autre plugin pdf ?

    • encore une chose, je remarque que ton site est placé dans un sous-répertoire, l’as-tu configuré dans le .htaccess

    • -  version php : PHP Version 5.3.8
      -  SPIP gére les miniatures
      -  GD2 installé

      GD Support enabled
      GD Version bundled (2.0.34 compatible)
      FreeType Support enabled
      FreeType Linkage with freetype
      FreeType Version 2.1.9
      GIF Read Support enabled
      GIF Create Support enabled
      JPEG Support enabled
      libJPEG Version 6b
      PNG Support enabled
      libPNG Version 1.2.7
      WBMP Support enabled
      XPM Support enabled
      XBM Support enabled

      Directive Local Value Master Value
      gd.jpeg_ignore_warning 0 0


      -  Rien n’est parametré dans le .htaccess ...
      je ne l’utilise pas. Mais peut etre est-ce une erreur ???

    • en effet, je ne suis pas spécialiste mais il me semble que c’est plutôt préférable.
      modifie le .htaccess à la racine de ton spip pour préciser le chemin de la racine du serveur jusqu’au répertoire de ton spip

      ### Configuration sous-repertoire
      # Chez la plupart des hebergeurs il faut indiquer "RewriteBase /"
      # sinon modifiez cette ligne
      
      RewriteBase /sous/repertoire

    Répondre à ce message

  • 3

    Bonjour,
    Si je veux modifier la mise en page du PDF je vais dans quel fichier ?

    A bientôt,
    G

    • Re-bonjour,

      J’ai trouvé le fichier à modifier ( pdf/ lib_pdf_spip.php ) pour créer ma mise en page perso !
      c-à-d sans la page de titre, que je trouve trop lourde surtout quand le texte à transformer en PDF fait qu’une page.
      ...

      Maintenant vient la question suivante :

      Je dois placer mon fichier modifié où pour qu’il ne soit pas écrasé à la prochaine mise à jour du plugin ?

    • logiquement tu places pdf/ lib_pdf_spip.php dans ton dossier de squelette et cela devrait fonctionnner.

    • Super merci. Ça marche.
      Mon erreur : j’avais placé article_pdf_2_0/ pdf/ lib_pdf_spip.php dans le squelette
      au lieu de seulement pdf/ lib_pdf_spip.php

    Répondre à ce message

  • Bonjour,

    La génération du pdf fonctionne,
    Seulement, dans le texte de l’article généré dans le pdf, passé une certaine taille de police (mettons 18) les titres qui s’étalent sur 2 lignes se chevauchent (cf image)

    En d’autres termes je cherche à modifier l’interlignage mais ne trouve pas la méthode sur le site http://www.fpdf.org.

    Je génère le texte avec la méthode : $this->WriteHTML($texte,5);
    Et j’utilise les balises html (notamment les titres...) via ckeditor pour la rédaction des articles

    Quelqu’un a t’il déjà eu le cas ?

    Cordialement,
    Pierre-Yves

    Répondre à ce message

  • hlacroix

    Bonjour,
    J’ai mis à jour le plugin « Article PDF » et j’obtiens le message d’erreur « FPDF error : Could not include font definition file ».
    Avant cette mise à jour tout fonctionnait bien.
    J’utilise :
    -  SPIP 2.1.10 [17657]
    -  squelette EVA-Web 4.1
    -  Couteau Suisse 1.8.43.01
    -  Article PDF 0.4.5
    D’avance merci.
    Cordialement.
    H. LACROIX

    Répondre à ce message

  • Bonsoir,

    Chez moi (SPIP 2.1.10) ce plugin ne fonctionne pas. Voir article :
    http://www.oulala.net/Portail/spip.php?article5231

    Et comme la notice d’utilisation n’est pas a jour..... je patauge.

    Une idée ?

    Cordialement

    Répondre à ce message

  • 6
    alquitte

    Bonjour,

    j’utilise Article Pdf avec un SPIP 2.1.10,

    mon souci vient du fait que j’utilise la fonction glossaire interne du couteau suisse : et malheureusement, le PDF généré affiche tous les mot-clés avec leurs définitions (ce qui perturbe la lecture) :

    exemple de page que vous pouvez générer en pdf : http://www.snetap-fsu.fr/BOYCOTT-DU-ROLE-DE-CONSEILLER.html

    comment peux-t-on lui demander de supprimer ces span dans article_pdf.html ?

    merci d’avance pour votre réponse !

    • A la lecture du code, il semble que ce plugin utilise le squelette article_pdf.html pour produire le PDF. Il semble aussi que les traitements sur #TEXTE (ou #RUBRIQUE) soient ignorés car la fonction pdf_first_clean_prepropre() ne lance que propre(), ce qui est anormal. Dans tous les cas, il vaut mieux éviter d’utiliser #TEXTE*.

      Bref, ça c’est une chose... Maintenant trois pistes pour résoudre le problème évoqué :
      -  Soit Article PDF applique les classes CSS...
      -  Soit Article PDF repère les classes du CS et les supprime.
      -  Soit le Couteau Suisse repère que le fond article_pdf est utilisé et modifie son affichage en conséquence.

    • Bonjour,
      merci pour les pistes >> je pense qu’il faut explorer la piste du fichier article_pdf_mes_fonctions.php et la fonction preg_replace pour remplacer les span du couteau suisse...

      le problème, c’est que je ne connais pas le php, aussi, je n’arrive pas à écrire mon expression...

      voici par exemple l’expression qui enlève les remarques HTML :

      $texte = preg_replace(',<!-- .* -->,msU', '', $texte); // supprimer les remarques HTML

      sur le même modèle, moi j’ai écris cette expression pour enlever un premier span du glossaire

      $texte = preg_replace(',<span class="gl_mot"> * </span>,msU', '', $texte); // supprimer les mots du glossaire

      mais ça ne fait rien...
      si quelqu’un peut m’aider à écrire l’expression correcte, je suis preneuse !

    • Ton expression sur les span n’est pas bonne, il faut « >.*< » sans espaces et non « > * < »... De plus, la classe que tu cherches à supprimer n’est pas la bonne : c’est « gl_dl » (méthode CSS) et non « gl_mot ».

      Essaie le Couteau Suisse version 1.8.41.04. Après recompilation des outils et vidange du cache, tu me diras ce que ça provoque. En principe, le CS détecte le fond article_pdf.html et applique le mode impression (celui qu’on peut provoquer en ajoutant cs=print dans l’URL) si toutefois le paramètre « cs » est bien propagé dans les inclure.

    • merci Pat pour tes explications,

      > pour infos, la correction de mon expression ne change rien....

      > J’ai mis à jour le couteau suisse >> ça ne change rien à mon souci.

      Je suis allée relire les informations sur les particularités du « mode impression » sur la page du couteau suisse, et je n’ai pas d’inclure pour le corps de l’article.

      En relisant, les explications :

      En mode impression, trois outils réagissent actuellement :
      -  Découpe en page : l’article est imprimé en intégralité sans découpage (juste un filet discret entre les pages), tout comme les onglets, représentés dans un léger cadre pointillé.
      -  Sommaire automatique : les ancres ne sont pas placées sur les intertitres.
      -  Liens en clair : les liens invisibles (liens externes ou mails) sont affichés entre crochets.

      >> le glossaire interne n’est pas cité parmi les trois outils, une action du couteau suisse sur article_pdf a t-elle bien lieu dans le cas d’un glossaire interne ?

      pour info, j’ai testé un article avec une découpe en onglet >> le pdf s’affiche avec la correction des trois paragraphes les uns sous les autres...

    • Ta version du CS est à jour, peut-être ne l’as-tu pas recompilé ?

      Le glossaire devrait prendre compte le mode impression, je vais compléter l’article en ce sens. Quel est l’adresse de ton article de test ? S’il y a un bug, on va le corriger...

    • Bonjour,

      bcp de temps à répondre pour ma part (>>vacances de juillet)...

      Merci Patrice, puisque que tous tes apports sur le couteau suisse ont permis de résoudre le problème et la génération pdf fonctionne correctement avec le glossaire interne du couteau suisse.

      PB résolu !!

    Répondre à ce message

  • Bonjour,

    j’ai installé le plugin qui semble bien fonctionner. Seulement j’aimerais revoir la disposition et la liste des éléments à afficher. En effet, l’image s’affiche pour l’instant de manière disgracieuse (trop bas et non centré), et certaines données n’ont pas à etre affichées dans mon pdf. Comment s’y prendre ?

    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