Retour du texte à la ligne et couleurs

Voici pour continuer un exemple imprimant des paragraphes de texte justifié. Il illustre également l'utilisation des couleurs.

<?php
define('FPDF_FONTPATH','font/');
require(
'fpdf.php');

class
PDF extends FPDF
{
function
Header()
{
    global
$titre;

    
//Arial gras 15
    
$this->SetFont('Arial','B',15);
    
//Calcul de la largeur du titre et positionnement
    
$w=$this->GetStringWidth($titre)+6;
    
$this->SetX((210-$w)/2);
    
//Couleurs du cadre, du fond et du texte
    
$this->SetDrawColor(0,80,180);
    
$this->SetFillColor(230,230,0);
    
$this->SetTextColor(220,50,50);
    
//Epaisseur du cadre (1 mm)
    
$this->SetLineWidth(1);
    
//Titre centré
    
$this->Cell($w,9,$titre,1,1,'C',1);
    
//Saut de ligne
    
$this->Ln(10);
}

function
Footer()
{
    
//Positionnement à 1,5 cm du bas
    
$this->SetY(-15);
    
//Arial italique 8
    
$this->SetFont('Arial','I',8);
    
//Couleur du texte en gris
    
$this->SetTextColor(128);
    
//Numéro de page
    
$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
}

function
TitreChapitre($num,$lib)
{
    
//Arial 12
    
$this->SetFont('Arial','',12);
    
//Couleur de fond
    
$this->SetFillColor(200,220,255);
    
//Titre
    
$this->Cell(0,6,"Chapitre $num : $lib",0,1,'L',1);
    
//Saut de ligne
    
$this->Ln(4);
}

function
CorpsChapitre($fichier)
{
    
//Lecture du fichier texte
    
$f=fopen($fichier,'r');
    
$txt=fread($f,filesize($fichier));
    
fclose($f);
    
//Times 12
    
$this->SetFont('Times','',12);
    
//Sortie du texte justifié
    
$this->MultiCell(0,5,$txt);
    
//Saut de ligne
    
$this->Ln();
    
//Mention en italique
    
$this->SetFont('','I');
    
$this->Cell(0,5,'(fin de l\'extrait)');
}

function
AjouterChapitre($num,$titre,$fichier)
{
    
$this->AddPage();
    
$this->TitreChapitre($num,$titre);
    
$this->CorpsChapitre($fichier);
}
}

$pdf=new PDF();
$titre='Vingt mille lieues sous les mers';
$pdf->SetTitle($titre);
$pdf->SetAuthor('Jules Verne');
$pdf->AjouterChapitre(1,'UN ÉCUEIL FUYANT','20k_c1.txt');
$pdf->AjouterChapitre(2,'LE POUR ET LE CONTRE','20k_c2.txt');
$pdf->Output();
?>

La méthode GetStringWidth() permet de déterminer la longueur d'une chaîne dans la police courante, ce qui est utilisé ici pour calculer la largeur du cadre entourant le titre. Puis les couleurs sont définies (via SetDrawColor(), SetFillColor() et SetTextColor()) et l'épaisseur du trait positionnée à 1 mm (contre 0,2 par défaut) grâce à SetLineWidth(). Il ne reste alors plus qu'à imprimer la cellule pour le titre (le dernier paramètre à 1 indique que le fond doit être coloré).

La méthode permettant d'imprimer les paragraphes est MultiCell(). A chaque fois qu'une ligne arrive à l'extrémité droite de la cellule ou qu'un caractère de retour-chariot est rencontré, un saut est effectué et une nouvelle cellule automatiquement créée sous la précédente. Le texte est justifié par défaut.

Deux propriétés du document sont positionnées : le titre (SetTitle()) et l'auteur (SetAuthor()). Les propriétés sont visibles de deux manières différentes. En ouvrant directement le document avec Acrobat Reader, en allant dans le menu Fichier, Informations sur le document, option Générales. Seconde méthode, accessible aussi à partir du plug-in, cliquer sur le triangle juste au-dessus de la barre de défilement de droite et sélectionner Informations sur le document.