Générateur de PDF

Attention, cette contribution est EN CHANTIER : elle n’est peut-être pas fonctionnelle.

Présentation du générateur

Ce document article_pdf_1_9, lequel ne fait la génération que pour un seul article à partir d’un icone à placer dans le squelette des articles.

Ce générateur permet de convertir tous vos articles SPIP en fichier PDF (1 article = 1 fichier pdf) et créer aussi un fichier sommaire.pdf (qui correspond au plan SPIP) qui fait le lien avec les articles générés en PDF.

Installation du générateur

Dans le répertoire de votre site spip
-  Créer le dossier article_PDF dans le dossier /IMG/
-  Placez à la racine de votre site le dossier zip joint après l’avoir dézippé (il s’appellera « pdf »)
-  Lancement du générateur, via votre navigateur avec l’url : urlsite/pdf/

Contenu du dossier « pdf »

fichier / sous-dossiertitredescription
index.php sommaire de la génération indique quelques regles nécessaires au fonctionnement de la génération
pdf.php génération automatique des articles et du sommaire contient le script de génération pdf automatique de tous les articles du site SPIP.

Lorsqu’il y a une erreur (du surement à un fichier pdf existant et pas fermé pendant la generation PDF auto), on affiche chaque erreur dans un tableau avec un bouton qui permet de relancer le script dans une autre fenetre (en cliquant sur le bouton) jusqu’à ce que le fichier soit générer car apres le fichier qui pose probleme disparait de la popup et donc on ne peut que la fermer (on peut aussi le faire avant sans avoir générer le fichier)

pdf_man.php génération manuelle d’un article ou du sommaire contient le script de génération manuelle d’un article (utilisé par le fichier ci-dessus s’il y a eu une erreur lors de la génération)
hjlh d’erreur (apres la ligne 1137 : $f=@fopen($name,’wb’) ; )

Notas Spip-contrib

Cette contrib, bien que non testée dans des situations diverses, ni aboutie sous la forme de plugin [1], est quand même proposée comme pouvant intéresser certains. Cependant chaque utilisateur doit la tester avant utilisation sur un site de production. En particulier pour le cas d’usage sur un site important (des centaines d’articles, iconographie riche), alors la taille des fichiers générés, et les temps de calcul sur le serveur, sont à vérifier avant. Merci d’avance de faire vos retours d’utilisation via ce forum.
aherdane

Notes

[1Si certains sont intéressés par ce chantier qu’ils prennent contact avec l’auteur

Discussion

12 discussions

  • bonjour et merci pour cette contrib.

    Par contre j’ai un soucis a l’installation :

    Warning : Division by zero in/xxx/xxx/xxx/pdf/pdf/lib_pdf_global.php on line 681

    soit :
    do
    $tableFontSize = $tableFontSize *min(1.0,$wrwi/$TableWidth)*0.99 ; // 0.99 pour converger plus vite

    Répondre à ce message

  • 2

    Bonjour
    J ai fait 2 install sur 2 serveurs et je rencontre toujours le meme probleme, les images
    ne sont pas generees.
    Voici un extrait du resultat :

    <img1|left> Fondée par le Premier Consul le 28 janvier 1802 à Fontainebleau. ...

    Est ce que j ai rate quelque chose dans la config ?
    Merci
    P. J

    • ericbay

      Salut,
      tu n’as rien raté dans la config car je n’ai tout simplement pas géré les images dans la génération des pdf
      plusieurs causes à cela :
      — pas le temps avec le boulot
      — pas nécessaire pour l’utilisation que je devais en faire (j’ai que du texte dans mes articles spip)

      Cordialement,
      Eric

    • Bonsoir
      Dommage pour les images.
      Merci tout de meme ;
      Amicalement
      P. J.

    Répondre à ce message

  • J aimerai beaucoup changer le modele du PDF proposé.... bref faire ma propre mise en page ... est-ce possible et si oui quel fichier faut-il modifier ?

    Cordialement

    Répondre à ce message

  • Bonjour,

    Est-il posssible de modifier la présentation du pdf et si oui où se trouve la création du modéle ?

    Merci d’avance

    Répondre à ce message

  • 5
    lululaglue

    Bonsoir, et merci pour cette contrib.
    Malheureusement ça ne marche pas chez moi, enfin plus ou moin.

    En fait, j’utilise beaucoup la balise < c o d e > pour décrire des commandes informatiques, et sur chaques articles où j’utilise cette balise la génération se solde par un echec.
    Par contre sur les articles dépourvus de cette balise ça marche bien :)

    Il y aurait il possibilité soit de faire que ça marche :D soit de supprimer les balices code avant génération du pdf ?
    et encore mieux, supprimer les balises code et utliser une police baton pour le contenu (genre arial ou autre...).

    Merci pour les éventuelles réponses ;)

    • ericbay

      Bonjour,
      il est possible de supprimer cette balise et voila comment faire :
      dans la fonction raccourcis($texte) et dans $chercher_raccourcis = array :
      -  ajoute une nouvelle ligne tout au debut qui contiendra :
      /* 0 */                ",[<][c][o][d][e][>](.*)[<][\/][c][o][d][e][>]],Ums",                // balises code

      dans la fonction raccourcis($texte) et dans $remplacer_raccourcis = array :
      -  ajoute une nouvelle ligne tout au debut qui contiendra :
      /* 0 */                 "<div style=\"font-family:Arial, Albertus,Courrier;\">$1</div>",                        /* Suppression des balises code et encadrement par des balises div avec une police spéciale*/

      Remplace Arial, Albertus,Courrier par le nom des polices que tu veux avoir (il en faut au minimum 3 car si le navigateur ne reconnait pas la premiere, il passe à la suite)

    • lululaglue

      waouu merci pour cette réponse rapide, je test demain et te tiens au courant ;)

    • lululaglue

      bon c’est ok pour la conversion des balises [ code ] mais ça n’a pas résolu mon problème :’(

      Et si j’affiche le resultat de la moulinette avant que se soit converti en pdf, j’ai des problèmes dès le début avec des ancres du style :
      -*[présentation->#presentation]

      Je comprend pas trop :-/

    • ericbay

      pour les ancres du style [partie1->#partie2] c’est remplacé par partie1 dans tes articles

      si tu souhaite modifier ce qu’il va te remplacer, il faut :
      -  supprimer dans la fonction raccourcis, les 2 lignes suivantes :
      — /* 33 */        ",\[(.*)\-\>\#(.*)\],Ums",                                                /* lien vers ancre sur l'article lui meme */
      — /* 33 */        "$1",
      (cela te permettra ne ne plus tenir compte des ancres du style [partie1->#partie2])
      -  modifier dans la fonction raccourcis, la ligne suivante :
      — /* 33 */        "$1",
      $1 represente ce que contient partie1 et si tu veut aussi partie2 alors, il faut mettre $2

    • lululaglue

      Merci de m’aider eric, mais ça déconné de trop alors je suis passé à une autre solution, que je conseils à tous pour sa simplicité : http://www.htmldoc.org/
      htmldoc est un logiciel (libre) qui converti à la volé n’importe quel document html en pdf, du coup plus de soucis avec les ancres, les tableaux, les balises code puisque le logiciel s’appuie sur le code html et css.
      Et pour la mise en place 4 lignes de php suffisent.

    Répondre à ce message

  • 9

    Bonjour

    Ce générateur est bien. Mais j’ai deux spip sur mon site, un à l’adresse principale et l’autre dans un sous-domaine. et il ne prend pas du tout en compte le sous-domaine alors que je lui précise l’adresse. Il génère systématiquement les pdf des articles du premier spip. Comment pourrais-je faire ?

    • Salut,

      Pour le 2e site, il faut faire une copie du dossier pdf qui se trouve à la racine en le renommant en pdf2

      Ensuite, il faut renommer dans tous les fichiers contenus dans le dossier pdf2 en modifiant tous les chemin contenant pdf/

      De plus, tu auras un souci car les articles générés par les sites porteront le meme nom pour tes 2 sites

      Cordialement,
      Eric

    • merci pour ta réponse, mais j’ai installé cette fonctionnalité que pour le sous-domaine en fait... donc normalement pas de parasite. et je me disais que j’avais peut etre oublier de modifier quelque chose. car la seule chose qui beugue c’est la transformation des articles en pdf...

    • ericbay

      Salut,

      Ce que tu peux avoir oublié de modifier est le nom des tables, de la base de donnée dans les requetes SQL si elles sont différentes pour tes 2 sites.

      Pour mon fichier zip, mes tables commencent toutes par spip_
      Il faut donc que tu remplaces le nom de chaque table par celui qui correspond à ton 2e site spip pour lequel tu n’arrive pas à générer les articles

      En espérant que cela t’aide,

      Cordialement,
      Eric

    • Bonjour

      ca marche super merci, j’ai modifié le nom de la table dans chaque fichier. et j’ai testé un peu, le pdf généré correspond à l’article

      seuls petits hics,

      1- mineur j’espère...
      pour chaque article, au moment de la génération de pdf, apparaît cette erreur :

      Warning : in_array() [function.in-array] : Wrong datatype for second argument in /www/sites/1/D/E/depressionauquotidien.com/monblog/pdf/pdf/lib_pdf_global.php on line 122

      2- les caractères spéciaux, lettres avec accents etc n’ont pas l’air d’apparaître correctement...

    • petite précision, qui pourrait intéresser certains.
      j’ai installé le plugin « fckeditor22-Spip191 » téléchargeable à cette adresse : http://electropol.free.fr/spip/spip.php?article8.

      elle permet une mise en page de l’article plus riche via l’espace privé (cliquer sur « modifier cet article » pour l’utiliser, « modifier cet article avec l’éditeur spip » étant destiné à utiliser la barre d’outil standard). donc, les pdf générés reprennent bien la mise en page effectuée grâce à cette barre de type word.
      attention, lorsqu’on passe d’un mode d’édition à un autre. si on modifie un article avec ce plugin et que l’on passe en mode édition spip simple, il affiche le code html nécessaire à la mise en page. br, font, etc

    • ericbay

      Désolé je ne vois pas d’ou peux venir cette erreur

      En ce qui concerne, le 2 il faut verifier que les caracteres spéciaux ne soit pas remplacés par la fonction lettre qui remplace comme son nom l’indique les caractères unicodes en caracteres pas unicode

    • vu que tu supposais un problème d’interprétation du caractère. et comme moi je connais pas le php, j’ai préféré changer de préfixe dans spip pour qu’il n’y ait plus le 2.

      au départ j’avais modifié les fichiers suivants (modifiés de nouveau du coup) :
      config.inc.php
      ouvre_pdf.php
      pdf.php
      pdf_man.php
      sommaire.php

      mais toujours cette erreur. ai-je oublié de modifier un fichier ?

    • ericbay

      Salut Flo,

      Je ne vois pas d’ou peux venir ton erreur
      et non tu n’as pas oublié de modifier d’autres fichiers

      Cordialement,
      Eric

    • ok, bon je vais laisser comme ca en attendant
      en tout cas merci d’avoir pris le temps de me répondre :)

    Répondre à ce message

  • 6

    bonjour,

    j’essaye sur plusieurs sites. Sur 1.9.0 et 1.9.1, j’ai l’erreur :

    Erreur avec URL du site

    Bienvenue

    Vous êtes sur la page de génération de tous vos articles de votre site SPIP en fichier PDF

    Attention

    Vérifier que le dossier article_PDF existe bien dans /IMG/

    Aucun fichier pdf dans ce dossier ne doit etre ouvert...

    puis :

    Génération pdf

    Liste des erreurs dans la génération des fichiers PDF (si vide, alors il n’y a pas d’erreur) :

    Erreur avec URL du site

    Erreur avec les id des rubriques à la racine

    Erreur avec l\’id max ...

    impossible de se connecter

    Sur 1.9.0 j’ai plus courtement comme 3e erreur :

    Génération pdf

    Liste des erreurs dans la génération des fichiers PDF (si vide, alors il n’y a pas d’erreur) :

    Impossible de se connecter

    Sur 1.9.2b3 en local, j’ai :

    Warning : mysql_connect() [function.mysql-connect] : Access denied for user : ’root@localhost’ (Using password : NO) in /Users/delattre/Sites/hortical/pdf/config.inc.php on line 13
    Impossible de se connecter

    j’ai vu que d’autres utilisateurs ou utilisatrices n’ont pas de problèmes.

    Claude

    • Bonjour j’ai le même problème

      Erreur avec URL du site
      Erreur avec les id des rubriques à la racine
      Erreur avec l\’id max

    • -  probleme1 : Erreur avec URL du site
      vérifie dans le fichier config.ing.php que le nom de la table dans la requete SELECT valeur FROM spip_meta WHERE nom = ’adresse_site’ soit le meme que moi (mon nom de table est spip_meta)

      -  probleme2 : Erreur avec les id des rubriques à la racine
      vérifie dans le fichier sommaire.php que le nom de la table dans la requete SELECT id_rubrique,titre FROM spip_rubriques WHERE id_parent = 0 ORDER BY titre ASC soit le meme que moi (mon nom de table est spip_rubriques)

      -  probleme3 : Erreur avec l\’id max
      vérifie dans le fichier pdf.php que le nom de la table dans la requete SELECT max(id_article) FROM spip_articles soit le meme que moi (mon nom de table est spip_articles)

      Nb : vérifier si vous avez d’autres problemes le nom des tables dans les requetes SQL

    • -  pour ce probleme impossible de se connecter :
      il faut que tu vérifie les parametres de connexions à mysql dans le fichier config.inc.php car tu n’auras pas le meme parametres que moi probablement

      -  pour ces 3 autres problemes (regarde mon autre réponse) :
      — Erreur avec URL du site
      — Erreur avec les id des rubriques à la racine
      — Erreur avec l\’id max ...

    • Bonjour, après vérification dans les fichiers et si j’ai compris les explications aux problèmes 1-2-3, il semble que tout soit comme il est décrit. Pourtant j’ai moi aussi ces 3 erreurs, que j’ai vérifiées ici :

      // Selection de l’adresse du site SPIP
      $rq = « SELECT valeur FROM spip_meta WHERE nom = http://www.allocarpentras.com » ;
      $ex_rq = mysql_query($rq) ;
      if(!$ex_rq)

      echo « 
      Erreur avec URL du site » ;

      // Cherche les id des rubriques à la racine
      $rq_rub_racine = « SELECT id_rubrique,titre FROM spip_rubriques WHERE id_parent = 0 ORDER BY titre ASC » ;
      $ex_rq_rub_racine = mysql_query($rq_rub_racine) ;

      Zut, je peux pas copier la ligne du 3è fichier vu que sur la page sur lquelle je fais le message, le texte des aides est en « introduction »

      Mais bref, si tout est conforme, on cherche où svp ?

      Merci

    • pour ce morceau la :

      // Selection de l’adresse du site SPIP :

      $rq = « SELECT valeur FROM spip_meta WHERE nom = http://www.allocarpentras.com » ; 
      $ex_rq = mysql_query($rq) ; 
      if( !$ex_rq) echo "Erreur avec URL du site" ;

      met ceci :

      // Selection de l’adresse du site SPIP :

      $rq = "SELECT valeur FROM spip_meta WHERE nom = 'http://www.allocarpentras.com' " ; 
      $ex_rq = mysql_query($rq) ; 
      if(!$ex_rq) echo "Erreur avec URL du site" ;

      pour l’autre morceau de code, je ne vois aucun probleme dans le code php pour la requete mysql

    • A ma 1re tentative j’avais laissé les ’ ’ pour l’url du site , c’est au loupé que j’ai essayé en les enlevant. J’aurais du te le signaler

      Ensuite, pour le 3, là non + il ne semble pas y avaoir de différence avec tes données :
      voilà ma ligne de fichier :

      // Recherche de l’id_article max
      $rq = « SELECT max(id_article) FROM spip_articles » ;
      $ex_rq = mysql_query($rq) ;
      if(!$ex_rq)

      Je n’en n’ai pas un besoin particulier, c’est surtout pour avancer.. :-)
      Si on trouve ça fait avancer les autres aussi.

      merci de la réponse au fait :-)

    Répondre à ce message

  • Bonjour,

    Est-il possible d’avoir une présentation du texte plus sympa et d’ajouter les images / photos comme dans les versions précédentes des générateurs de pdf ?

    Répondre à ce message

  • je souhaite adapter la contrib pour qu’il récuperre les entrées des formulaires générées par le plugin form&table (sous SPIP 191) et renvoie ainsi le pdf au visiteur en guise de réponse (ou un lien pour le télécharger)

    hors actuellement il n’interprette pas le code de

    l’idée serai de récupérer les infos qui sont envoyées par Email en tant que confirmation

    merci d’avance pour votre attention

    Répondre à ce message

  • 1

    Bonjour

    Je viens d’installer le générateur de pdf et tout fonctionne.
    Mais et il y a toujours un mais comment dois-je faire pour que l’icone pdf apparaissent sur ma page article pour spécifier aux visiteurs qu’il y a la possiblité de l’avoir en pfd.

    Merci pour vos réponses.
    Sophie

    • dans le squelette des articles (article.html) tu rajoute dans la balise body :

      <img src="IMG/pdf.jpg" title="Format PDF" alt="Format PDF" onclick="window.open('pdf/ouvre_pdf.php?id=#ID_ARTICLE')">

      dans le dossier pdf (ou il y a tous les fichiers générant les pdf automatiquement), tu crée un fichier ouvre_pdf.php et dedans tu met le code suivant :

      <?php
      include_once 'pdf/fpdf.php';
      header('Location: pdf_man.php?id='.$_GET["id"]);
      header("location: http://localhost/spip/IMG/article_PDF/article_".$_GET["id"].".pdf" );
      ?>

      Remplace http://localhost/spip/ par l’adresse de ton site spip
      pdf.jpg correspond à l’icone pdf

    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