Changes

Jump to navigation Jump to search
m
no edit summary
Line 1: Line 1: −
= Comment modifier un modèle =
+
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.
 +
 
 +
 
 +
 
 +
= Tester les modèles existants =
 +
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 =
 +
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'
 +
# copier-coller pdf_propale_bleu.modules.php
 +
# renommer la copie en pdf_propale_masocietebleu.modules.php
 +
# l'éditer et faire les modifs suivantes dans le code:
 +
## Renommer 'Class pdf_propale_bleu { '    en 'Class pdf_propale_masocietebleu { '  (ligne 24)
 +
## Renommer 'Function pdf_bleu($db=0)' en 'Function pdf_propale_masocietebleu($db=0)'  (ligne 26)
 +
## Sauvegarder : le modèle 'masocietebleu' est disponible dans la liste des modèles de propales de Dolibarr
 +
## 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 ==
 
== Librairie de création ==
Line 15: Line 42:  
* $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''
 
* $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''
   −
=== English version ===
  −
  −
The library used to create PDF documents is called FPDF and can be found in htdocs/includes/fpdf/fpdf/fpdf.class.php. You can also find in this class the numerous methods used to generate the various elements of the documents.
  −
  −
The models themselves instanciate the FPDF class and use its methods, combined with the data of an invoice, an order or any other type of data.
  −
  −
You can generally find the following calls inside the documents creation scripts:
  −
* $pdf->SetFont() - ''Sets the font to use for the text that follows''
  −
* $pdf->SetXY() - ''Sets the position of the starting point to display the following text in X,Y coordinates, given in millimeters of the page''
  −
* $pdf->MultiCell() - ''Displays a box that can contain text. First the width and the height must be given - very used''
  −
* $pdf->GetY() - ''Returns the current Y position''
  −
* $pdf->SetDrawColor() - ''Sets the color to use in the following text - generally black (0,0,0) or white (255,255,255)''
  −
* $pdf->Rect() - ''Displays a rectangle of which the top-left corner is at the point given by the first two parameters, and the bottom-right corner is at the point given by the last two parameters, relatively to the two first parameters (so basically the last parameters are width and height, not coordinates)''
      
== Structure des scripts ==
 
== Structure des scripts ==
Line 41: Line 55:  
* _pagefoot() - ''Méthode de dessin du pied de page''
 
* _pagefoot() - ''Méthode de dessin du pied de page''
   −
=== English version ===
+
   
 +
== Insertion d'un logo ==
 +
* 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.
   −
The PDF documents generation scripts, at the time of version 2.2 development, use the following methods (taking as example the "crabe" model) inside the classe of then model name:
+
= Merci =
* pdf_crabe() - ''Constructor of the $pdf object''
+
Merci à David, Florent et surtout ozit pour leur aide.
* write_pdf_file() - ''Generic method for the file generation. This method calls all the following methods after having initialised some variables''
  −
* _pagehead() - ''Method to design the header of the document, including the logo, the document title (and date) as well as the sender and receiver details''
  −
* _tableau() - ''Method to design the large table with the contents of the invoice''
  −
* _tableau_info() - ''Method to design the table giving information related to the invoice (payment conditions and so on)''
  −
* _tableau_tot() - ''Method to design the totals table''
  −
* _tableau_versement() - ''Method to design the payment references table''
  −
* _pagefoot() - Method to design the footer of the document
 

Navigation menu