SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

289 Plugins, 197 contribs sur SPIP-Zone, 93 visiteurs en ce moment

Accueil > Rédaction > Imprimer et PDF > FPDF > Réaliser un PDF personnalisé avec FPDF

Réaliser un PDF personnalisé avec FPDF

9 septembre 2013 – par erational – commentaires

9 votes

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

Comment réaliser simplement des PDFs sur mesure via le plugin FPDF.

Nous allons réaliser un plugin imaginaire qui permet de délivrer des diplômes.

Objectifs

Créer un plugin qui permet à l’utilisateur de créer son diplôme en format PDF après avoir saisi son nom et prénom.

Étape 1 : Créer le plugin

Le plus simple pour créer un plugin propre est de le créer via La Fabrique.
On choisit :

  • un préfixe : diplome
  • choisir d’avoir les fichiers d’installations.

Une fois le plugin crée, éditer le paquet.xml pour ajouter la dépendance au plugin FPDF . Celui-ci s’installera automatiquement à l’activation du plugin.

Étape 2 : Créer un répetoire à l’activation du plugin

A l’activation du plugin, on souhaite créer un sous répertoire /IMG/diplome/ pour stocker les futurs PDFs.

Dans fichier d’installation diplome_administrations.php, nous ajoutons une fonction pour créer le sous-répertoire IMG/diplome

  1. function diplome_create() {
  2.            include_spip('inc/getdocument');
  3.            creer_repertoire_documents('diplome');
  4. }

Télécharger

Cette fonction doit être appelée dans la fonction diplome_upgrade qui gère l’installation et mise à jour des plugins.

  1. function diplome_upgrade($nom_meta_base_version, $version_cible) {
  2.         $maj = array();
  3.  
  4.         $maj['create'] = array(      
  5.      array('diplome_create')
  6.   );
  7.  
  8.   include_spip('base/upgrade');
  9.         maj_plugin($nom_meta_base_version, $version_cible, $maj);
  10.  
  11. }

Télécharger

Étape 3 : Créer le formulaire CVT

Ensuite nous allons créer le formulaire CVT demandant nom et prénom.

Pour cela, on crée un répertoire formulaires avec le couple diplome.html et diplome.php

diplome.html
Le fichier renseigne la structure HTML du document. Pour nous simplifier la tâche, nous utilisons la syntaxe simplifiée du plugin saisies

  1. <div class="formulaire_spip formulaire_salon">
  2.   [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
  3.   [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
  4.  
  5. [(#EDITABLE|oui)
  6. <form action="#ENV{action}" method="post"><div>
  7.         #ACTION_FORMULAIRE{#ENV{action}}
  8.         <ul>
  9.     [<input type="hidden" name="lang" value="(#ENV{lang})" />]
  10.     [(#SAISIE{input,nom,label=<:diplome:form_nom:>,size=35})]
  11.     [(#SAISIE{input,prenom,label=<:diplome:form_prenom:>,size=35})]  
  12.   </ul>
  13.        
  14.   <p style='display:none;'>
  15. <label for="url">Veuillez laisser ce champ vide&nbsp;:</label>
  16. <input type="text" name="url" id="url" value="" size="10" />
  17. </p>
  18.   <p class="boutons"><input type="submit" class="submit" value="Valider" /></p>
  19. </div></form>
  20. ]
  21. </div>

Télécharger

En bonus, on ajoute un champs caché pour gêner les spammeurs.

diplome.php
Le fichier gère le formulaire en php à travers les étapes

  1. Charger : on initialise les variables
  2. Vérifier : on traite les erreurs (par exemple les champs obligatoires)
  3. Traiter : il n’y pas d’erreur, on peut lancer la création du PDF. Voir chapitre suivant ...

Pour en savoir plus sur les formulaires CVT

Étape 4 : Créer le pdf

A l’étape du traitement du formulaire, on crée le PDF à la volée en chargeant un PDF patron vierge et en remplissant des valeurs du formulaires.

Pour cela, on charge :

  • la librairee fpdf pour la création du pdf en lui-même
  • la librairie fpdi pour l’import d’un pdf existant
  1. function formulaires_diplome_traiter_dist(){
  2.  // ... le traitement initial
  3.  
  4.  // la création du pdf
  5.  define('FPDF_FONTPATH','font/');
  6.  include_spip('fpdf');
  7.  include_spip('fpdi');
  8.  
  9.  // On crée le pdf
  10.  $pdf = new FPDI('L','mm','A4');  
  11.  $pdf->AddPage();    
  12.  $pdf->SetMargins(0,0);
  13.  
  14.  // On importe le diplome vierge
  15.  $pdf->setSourceFile(find_in_path("pdf/diplome.pdf"));
  16.  $tplIdx = $pdf->importPage(1);
  17.  $pdf->useTemplate($tplIdx, 0, 0, 0, 0, true);
  18.          
  19.  // on ajouter le texte complémentaire
  20.  $pdf->SetFont('Arial','B',16);
  21.  $pdf->SetTextColor(70,70,70);
  22.  $pdf->SetXY(70, 118);
  23.  $pdf->Cell(0,0, iconv('UTF-8', 'windows-1252', $prenom." ".$nom));
  24.                    
  25.  $pdf->SetFont('Arial','',14);
  26.  $pdf->SetXY(170, 158);
  27.  $pdf->Cell(0,0, date("d / m / Y"));
  28.  
  29.  // on sauve dans le repertoire dedie (crée lors de l'installation)
  30.  $nom_final = _DIR_IMG."/diplome/".$nom_pdf;  
  31.  $pdf->Output($nom_final, 'F');
  32.  
  33.  // la suite du traitement
  34. // ....

Télécharger

Pour connaitre toutes les possibilités, consulter les manuels de

Étape 5 : Intégrer le formulaire dans le site

Le webmaster pourra intégrer ce formulaire dans son squelette via la balise #FORMULAIRE_DIPLOME.

Nous ajoutons un modèle pour que le rédacteur puisse aussi l’ajouter en utilisant le raccourci <diplome1>.
modeles/diplome.html

  1. <div class="ajax">#FORMULAIRE_DIPLOME</div>

Étape 6 : Aller plus loin

Télécharger le plugin avec le code complet fonctionnel

Libre à vous ensuite de le personnaliser, corriger et aller plus loin comme par exemple :

  • Envoyer le pdf généré par email grâce au Facteur qui permet d’envoyer des pièces jointes
  • D’ajouter un cryptogramme sur le pdf (ticket personnalisé)
  • Ajouter un QR code
  • Générer une attestation, un billet de concert, une facture, ....
  • .....

Dernière modification de cette page le 18 septembre 2013

Retour en haut de la page

Vos commentaires

  • Le 29 mars 2016 à 16:48, par touti En réponse à : Réaliser un PDF personnalisé avec FPDF

    Hello,
    merci pour ton code.

    Après test, chez moi iconv n’est pas trouvé soit erreur function iconv undefined.
    J’utilise en remplacement avec succès
    mb_convert_encoding($prenom.'  '.$nom, 'windows-1252'));

    PS
    je ne vois pas le plugin sur la zone pour modifier.
    ++

    Répondre à ce message

  • Le 12 septembre 2013 à 22:57, par gilcot En réponse à : Réaliser un PDF personnalisé avec FPDF

    Merci pour cette belle contribution pédagogique qui montre par un cas pratique (et concret mais simple) comment utiliser FPDF.

    Il me semble qu’il y a déjà un plugin qui fait la même chose, sauf que là c’est refait en un tour de main et on on saura le personnaliser à sa guise.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • FancyBox

    25 mars 2009 – 416 commentaires

    Adaptation du script FancyBox pour jQuery en plugin SPIP. Liste des fonctionnalités reprise depuis le site original : ajoute un joli effet d’ombre portée sous la fenêtre possibilité de grouper les images pour naviguer dans les séries d’éléments (...)

  • Pub Banner : gestionnaire de bannières publicitaires

    28 juin 2011 – 135 commentaires

    Le plugin « PUB BANNER » est un gestionnaire complet de bannières publicitaires pour des squelettes SPIP. Il prend en charge tous les types de bannières et permet de leur attribuer des publicités (locales ou distantes, images ou Flash). Chaque (...)

  • Indexer : Installation et Configuration

    6 octobre 2014 – 42 commentaires

    Introduction Pour comprendre l’intérêt du plugin, nous invitons à lire l’article suivant Indexer : Introduction. Le fonctionnement de la boucle SPHINX est expliqué dans cet article : Indexer : La boucle SPHINX. La suite de l’article aborde uniquement (...)

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2417 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • Plugin SEO

    6 août 2009 – 231 commentaires

    SEO est un plugin qui ajoute la possibilité d’insérer manuellement où vous le souhaitez ou de manière automatique dans la partie de votre site web : meta tags, URL canonique, Google webmaster tools Meta Code et Google Analytics javascript. Il est (...)