Génération de documents PDF avec des scripts PHP utilisant la librairie FPDF


précédentsommairesuivant

II. Premiers pas

Il faut savoir que les méthodes utilisées écrivent dans une page du document PDF généré. Avant d'utiliser certaines méthodes, il faut se placer dans la page avec la méthode SetXY(x,y) car on ne peut pas passer en paramètre la position désirée. (cf. )

Il est obligatoire de mettre la ligne SetFont sinon, la génération ne fonctionne pas...

II-A. Texte seulement

Il y a plusieurs façons d'écrire un texte dans une page.

II-A-1. avec la méthode Text

Description
Imprime une chaîne de caractères. L'origine est à gauche du premier caractère, sur la ligne de base. Cette méthode permet de positionner précisément une chaîne dans la page, mais il est généralement plus simple d'utiliser Cell(), MultiCell() ou Write() qui sont les méthodes standards pour imprimer du texte.

 
Sélectionnez
 
include("phpToPDF.php");

$PDF = new phpToPDF();
$PDF->AddPage();
$PDF->SetFont("Arial","B",16);
$PDF->Text(40,10,"Uniquement un texte");
$PDF->Output();
  
Commentaires
  • AddPage: ajoute une page dans le document;
  • SetFont: détermine la font utilisée (B pour Bold);
  • Text(float x, float y, string txt): Dans l'exemple ci-dessus, Text écrit "Uniquement un texte" en position (40, 10);
  • Output: permet d'afficher le document généré dans le navigateur.

Résultatvoyons voir ce tuto...

II-A-2. avec la méthode Write

Description
Cette méthode imprime du texte à partir de la position courante. Lorsque la marge droite est atteinte (ou que le caractère \n est rencontré), un saut de ligne est effectué et le texte continue à partir de la marge gauche. Au retour de la méthode, la position courante est située juste à la fin du texte. Il est possible de mettre un lien sur le texte.

 
Sélectionnez

include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',16);
$PDF->Write(10, "Ceci est un texte multilignes \nEt voici la deuxième ligne");
$PDF->Output();
  
Commentaires
  • Write(float h, string txt [, mixed link]) Dans l'exemple ci-dessus, Write écrit le texte "Ceci est un texte multilignes \nEt voici la deuxième ligne" avec un saut de ligne de 10 mm.

RésultatEt celui-là ...

II-A-3. avec la méthode Cell

Description
Imprime une cellule (zone rectangulaire) avec éventuellement des bords, un fond et une chaîne de caractères. Le coin supérieur gauche de la cellule correspond à la position courante. Le texte peut être aligné ou centré. Après l'appel, soit la position courante se déplace à droite, soit un retour à la ligne est effectué. Il est possible de mettre un lien sur le texte.

 
Sélectionnez
 
include("phpToPDF.php");

$PDF = new phpToPDF();
$PDF->AddPage();

//Sélection de la police
$PDF->SetFont('Arial','B',16);

//Décalage de 8 cm à droite
$PDF->Cell(80);

//Texte centré dans une cellule 20*10 mm encadrée et retour à la ligne
$PDF->Cell(20,10,'Titre',1,1,'C'); 
$PDF->Output();
  
Commentaires
  • Cell(80); écrit une cellule vide sans bord de 80 mm de large à partir de l'endroit où l'on se trouve, c'est-à-dire par défaut, en position (margeLeft, margeTop). Les marges ont la valeur 10 mm par défaut, pour les changer, utiliser SetMargins(); L'appel setXY(10, 90); aurait été similaire;
  • Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]]) Dans l'exemple ci-dessus, Cell écrit une cellule de taille (20,10), contenant le texte 'Titre', avec un bord, retour à la ligne et centré.

Résultatvoyons voir ce tuto...

II-A-4. avec la méthode MultiCell

Description
Cette méthode permet d'imprimer du texte avec des retours à la ligne. Ceux-ci peuvent être automatiques (dès que le texte atteint le bord droit de la cellule) ou explicites (via le caractère \n). Autant de cellules que nécessaire sont imprimées, les unes en dessous des autres.
Le texte peut être aligné, centré ou justifié. Le bloc de cellules peut être encadré et le fond coloré.

 
Sélectionnez
 
include("phpToPDF.php");

$PDF = new phpToPDF();
$PDF->AddPage();

//Sélection de la police
$PDF->SetFont('Arial','B',16);

$PDF->MultiCell(0, 10, "Ceci est un texte multilignes centré avec un bord\nEt voici la deuxième ligne", 1, "C", 0);
$PDF->Output();
  
Commentaires
  • MultiCell(float w, float h, string txt [, mixed border [, string align [, int fill]]]); Dans l'exemple ci-dessus, MultiCell écrit une cellule de taille (0, 10), contenant le texte entre guillemets, avec un bord, centré et sans remplissage de la cellule.

Résultatvoyons voir ce tuto...

II-B. Image seulement

Description
C'est la méthode Image(string file, float x, float y [, float w [, float h [, string type [, mixed link]]]]) qui est utilisée. Elle place une image dans la page. Le coin supérieur gauche doit être spécifié.

Les dimensions peuvent être indiquées de plusieurs manières :
  • largeur et hauteur explicites (exprimées dans l'unité utilisateur);
  • Une dimension explicite, l'autre étant calculée automatiquement afin de respecter les proportions de l'image originale;
  • Aucune dimension explicite, auquel cas l'image est dimensionnée en 72 dpi.

Les formats supportés sont le JPEG et le PNG.

 
Sélectionnez

include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',16);
$PDF->Image("./images/kitlogo.jpg", 50, 100);
$PDF->Output();
  
Commentaires
  • Image(string file, float x, float y [, float w [, float h [, string type [, mixed link]]]]) Dans l'exemple ci-dessus, Image met l'image "./images/kitlogo.jpg" en position (50, 100)

Résultatvoyons voir ce tuto...

II-C. Sommaire et numéros de page

Description
Il est aussi possible de numéroter ses pages et de générer automatiquement un sommaire. Il suffit de spécifier la page à partir de laquelle vous voulez commencer la numérotation et celle à partir de laquelle vous voulez arrêter la numérotation. Ensuite, pour chaque item du sommaire, vous devez ajouter son nom. Pour finir, il faut ajouter le sommaire sur la page désirée.

 
Sélectionnez

include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->SetFont('Times','',12);
$PDF->AddPage();
$PDF->Cell(0,5,'Page de garde',0,1,'C');
$PDF->AddPage();

// A partir de cette page, la numérotation commence...
$PDF->startPageNums();
$PDF->Cell(0,5,'TOC1',0,1,'L');

// On ajoute un item au sommaire
$PDF->TOC_Entry('TOC1', 0);
$PDF->Cell(0,5,'TOC1.1',0,1,'L');

// On ajoute un item au sommaire
$PDF->TOC_Entry('TOC1.1', 1);
$PDF->AddPage();
$PDF->Cell(0,5,'TOC2',0,1,'L');

// On ajoute un item au sommaire
$PDF->TOC_Entry('TOC2', 0);
$PDF->AddPage();
for($i=3;$i<=80;$i++){
	$PDF->Cell(0,5,'TOC'.$i,0,1,'L');
	
	// On ajoute un item au sommaire
	$PDF->TOC_Entry('TOC'.$i, 0);
}

// On arrête ici la numérotation
$PDF->stopPageNums();
$PDF->AddPage();
$PDF->Cell(0,5,'Page non numérotée',0,1,'L');

//Génère et insère le sommaire en page 2
$PDF->insertTOC(2);
$PDF->Output();
  
Commentaires
  • startPageNums() Cette méthode commence la numérotation des pages à partir de la page courante;
  • TOC_Entry('titre', 0); Cette méthode ajoute l'entrée 'titre' au sommaire;
  • stopPageNums() Cette méthode termine la numérotation sur la page courante;
  • insertTOC(2) Cette méthode génère le sommaire en page 2 du document.

Résultatvoyons voir ce tuto...

II-D. Enregistrer dans un document

Description
Il est intéressant d'afficher directement le document généré avec la méthode Output() mais il est d'autant plus intéressant d'enregistrer le document généré sur le serveur et de l'afficher à n'importe quel moment et n'importe où dans son site. Voici la procédure...

 
Sélectionnez

include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->SetFont('Times','',12);
$PDF->AddPage();
// on écrit ce que l'on veut dans le document PDF...

// enregistre le document test.PDF dans le répertoire local du serveur.
$PDF->Output("test.PDF", "F");

// affiche le document test.PDF dans une iframe.
echo '
	<iframe src="test.PDF" width="100%" height="100%">
	[Your browser does <em>not</em> support <code>iframe</code>,
	or has been configured not to display inline frames.
	You can access <a href="./test.PDF">the document</a>
	via a link though.]</iframe>
's;
  
Commentaires
  • Output("test.PDF, "F") Cette méthode enregistre le document généré dans le document ./test.PDF du serveur;
  • le bloc echo '...' Ce bloc permet d'afficher (si possible) le document ./test.PDF dans une iframe.

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 J.C. CORNIC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.