Difference between revisions of "Créer un modèle de document PDF"

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
m
m
Line 4: Line 4:
  
  
= Tester les modèles existants =
+
= Trouver le modèle existant le plus proche =
 
Dans Dolibarr tester les modèles existants (bleu, jaune, rouge) : créer une propale, la laisser à l'état de brouillon et tester les différentes présentations.
 
Dans Dolibarr tester les modèles existants (bleu, jaune, rouge) : créer une propale, la laisser à l'état de brouillon et tester les différentes présentations.
  
= Trouver le meilleur modèle =
+
Parmi ceux existant, noter le modèle le mieux adapté aux besoins. Dans cet exemple, c'est le modèle bleu (correspondant au fichier pdf_propale_bleu.modules.php).
Noter le modèle le mieux adapté aux besoins. Dans cet exemple, c'est le modèle bleu (correspondant au fichier pdf_propale_bleu.modules.php).
 
 
Rem: Pour info, tous les modèles de propales sont dans \includes\modules\propale si vous etes sous Windows et /includes/modules/propale si vous etes sous Unix.
 
Rem: Pour info, tous les modèles de propales sont dans \includes\modules\propale si vous etes sous Windows et /includes/modules/propale si vous etes sous Unix.
  

Revision as of 21:50, 24 August 2008

Ce document décrit comment créer son propre modele de generation de document PDF afin de personnaliser ces documents (propales, factures, etc...) Il se base sur les propositions commerciales comme exemple mais s'applique à tout type de document.


Trouver le modèle existant le plus proche

Dans Dolibarr tester les modèles existants (bleu, jaune, rouge) : créer une propale, la laisser à l'état de brouillon et tester les différentes présentations.

Parmi ceux existant, noter le modèle le mieux adapté aux besoins. Dans cet exemple, c'est le modèle bleu (correspondant au fichier pdf_propale_bleu.modules.php). Rem: Pour info, tous les modèles de propales sont dans \includes\modules\propale si vous etes sous Windows et /includes/modules/propale si vous etes sous Unix.


Créer le nouveau modèle

Par sécurité, on conservera les modèles d'origine. Créer le modèle 'masocietebleu'

  1. copier-coller pdf_propale_bleu.modules.php
  2. renommer la copie en pdf_propale_masocietebleu.modules.php
  3. l'éditer et faire les modifs suivantes dans le code:
    1. Renommer 'Class pdf_propale_bleu { ' en 'Class pdf_propale_masocietebleu { ' (ligne 24)
    2. Renommer 'Function pdf_bleu($db=0)' en 'Function pdf_propale_masocietebleu($db=0)' (ligne 26)
    3. Sauvegarder : le modèle 'masocietebleu' est disponible dans la liste des modèles de propales de Dolibarr
    4. Tester ce modèle (Voir A)) avant d'aller plus loin...

Personnaliser

Personnaliser le modèle créé. Toujours dans pdf_propale_masocietebleu.modules.php, chercher la fonction 'Function _pagehead(&$pdf, $fac)' (vers la ligne 306). C'est elle qui gère l'affichage de l'entête.


Librairie de création

La librairie utilisée pour la création de documents en PDF se nomme FPDF et peut être trouvée dans htdocs/includes/fpdf/fpdf/fpdf.class.php. C'est également dans cette classe que l'on trouve les nombreuses méthodes utilisées pour générer les différents éléments des documents.

Les modèles eux-même instancient la classe FPDF et utilisent ensuite ses méthodes, combinées avec les données d'une facture, d'une commande ou d'autres types de données.

On retrouve généralement les appels suivants dans les scripts de création de documents:

  • $pdf->SetFont() - Désigne la fonte à utiliser pour le texte qui suivra
  • $pdf->SetXY() - Désigne le point de départ pour dessiner le prochain texte en coordonnées X,Y qui sont exprimées en millimètres de la page
  • $pdf->MultiCell() - Dessine une boîte pouvant contenir du texte, et dont on doit d'abord donner la largeur et la hauteur - très utilisée
  • $pdf->GetY() - Renvoie la position courante en Y
  • $pdf->SetDrawColor() - Désigne la couleur à utiliser pour le prochain texte à écrire - généralement noir (0,0,0) ou blanc (255,255,255)
  • $pdf->Rect() - Dessine un rectangle dont le coin supérieur gauche est au point indiqué par les deux premiers paramètres et le coin inférieur droit utilise les deux derniers paramètres en mode relatif aux deux premiers


Structure des scripts

Les scripts de génération des documents PDF, au moment du développement de la version 2.2, disposent des méthodes suivantes (prenant pour exemple le modèle "crabe") au sein de la classe du nom du modèle:

  • pdf_crabe() - Constructeur de l'objet pdf
  • write_pdf_file() - Méthode générale pour la génération du fichier. Cette méthode appelle toute les suivantes après avoir initialisé quelques variables
  • _pagehead() - Méthode de dessin de l'en-tête du document, incluant généralement le logo, le titre du document (et la date) ainsi que les cadres de l'émetteur et du destinataire du document
  • _tableau() - Méthode de dessin du tableau de détails (produits, services, etc)
  • _tableau_info() - Méthode de dessin du tableau reprenant une liste d'informations sur la facture
  • _tableau_tot() - Méthode de dessin du tableau des totaux
  • _tableau_versement() - Méthode de dessin du tableau des règles de versement
  • _pagefoot() - Méthode de dessin du pied de page


  • Chercher la séquence suivante:
$pdf->SetXY(10,5);
if (defined("FAC_PDF_INTITULE"))
{
   $pdf->SetTextColor(0,0,200);
   $pdf->SetFont('Arial','B',14);
   $pdf->MultiCell(60, 8, FAC_PDF_INTITULE, 0, 'L');
  • Ajouter l'instruction:
   $pdf->Image('\www\htdocs\dolibarr\document\societe\logo.jpg', 10, 5,60.00);
  • Mettre en commentaire l'instruction d'affichage de la variable FAC_PDF_INTITULE

Modification des constantes affichées

Principales fonctions utilisées

    $pdf->setX(float a); fixe la position x courante
    $pdf->setY(float b); fixe la position y courante
    $pdf->setXY(float a,float b); fixe les positions x et y courantes
    (rappel: l'origine est le coin supérieur gauche)
    $pdf->SetTextColor(0,0,200); fixe la couleur du texte
    $pdf->SetFont('Arial','B',14); fixe la police, le type ( 'B' pour gras, 'I' pour italique,  pour normal,...)
    $pdf->MultiCell(60, 8, FAC_PDF_INTITULE, 0, 'L'); imprime la variable  FAC_PDF_INTITULE avec saut de ligne

(info: Il semble que Dolibarr gère un certain nombre de constantes dans Accueil => Configuration => System => Constantes. Mais ça ne fonctionne pas sur ma config ...).

Pour plus d'infos

http://www.fpdf.org/?go=script&id=2 et aller sur 'accueil'

Le résultat

Réalisation ozit: http://www.adytek.com/PR040123.pdf

Choisir un modèle par défaut dans Dolibarr

Dans Accueil => Configuration => proposition commerciale:

  • on affiche les modèles,
  • on indique ceux qui doivent etre actifs,
  • on précise le modèle proposé par défaut.

Merci

Merci à David, Florent et surtout ozit pour leur aide.