# 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
    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
        $this->Cell($w,9,$titre,1,1,'C',true);
        // 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, $libelle)
    {
        // Arial 12
        $this->SetFont('Arial','',12);
        // Couleur de fond
        $this->SetFillColor(200,220,255);
        // Titre
        $this->Cell(0,6,"Chapitre $num : $libelle",0,1,'L',true);
        // Saut de ligne
        $this->Ln(4);
    }

    function CorpsChapitre($fichier)
    {
        // Lecture du fichier texte
        $txt = file_get_contents($fichier);
        // 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();
    ?>

[Démo]

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 renseignées : le titre (SetTitle()) et l'auteur (SetAuthor()). Il y a plusieurs manères d'accéder aux propriétés dans Adobe Reader. La première consiste à ouvrir le document directement avec le lecteur, à aller dans le menu Fichier et à choisir l'option Propriétés. La seconde, disponible également à partir du plug-in, consiste à faire un clic droit et à choisir Propriétés du document. Enfin, on peut effectuer la combinaison de touches Ctrl+D.