Créer un modèle de document PDF
Comment modifier un modèle
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
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
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
English version
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:
- pdf_crabe() - Constructor of the $pdf object
- 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