# Ritorno a capo e colori

Continuiamo con un esempio in cui si stampano paragrafi giustificati. Si illustra anche l'uso dei colori.

    <?php
    require('fpdf.php');

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

        // Arial bold 15
        $this->SetFont('Arial','B',15);
        // Calculate width of title and position
        $w = $this->GetStringWidth($title)+6;
        $this->SetX((210-$w)/2);
        // Colors of frame, background and text
        $this->SetDrawColor(0,80,180);
        $this->SetFillColor(230,230,0);
        $this->SetTextColor(220,50,50);
        // Thickness of frame (1 mm)
        $this->SetLineWidth(1);
        // Title
        $this->Cell($w,9,$title,1,1,'C',true);
        // Line break
        $this->Ln(10);
    }

    function Footer()
    {
        // Position at 1.5 cm from bottom
        $this->SetY(-15);
        // Arial italic 8
        $this->SetFont('Arial','I',8);
        // Text color in gray
        $this->SetTextColor(128);
        // Page number
        $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
    }

    function ChapterTitle($num, $label)
    {
        // Arial 12
        $this->SetFont('Arial','',12);
        // Background color
        $this->SetFillColor(200,220,255);
        // Title
        $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
        // Line break
        $this->Ln(4);
    }

    function ChapterBody($file)
    {
        // Read text file
        $txt = file_get_contents($file);
        // Times 12
        $this->SetFont('Times','',12);
        // Output justified text
        $this->MultiCell(0,5,$txt);
        // Line break
        $this->Ln();
        // Mention in italics
        $this->SetFont('','I');
        $this->Cell(0,5,'(end of excerpt)');
    }

    function PrintChapter($num, $title, $file)
    {
        $this->AddPage();
        $this->ChapterTitle($num,$title);
        $this->ChapterBody($file);
    }
    }

    $pdf = new PDF();
    $title = '20000 Leagues Under the Seas';
    $pdf->SetTitle($title);
    $pdf->SetAuthor('Jules Verne');
    $pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
    $pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
    $pdf->Output();
    ?>

[Demo]

Il metodo GetStringWidth() permette di determinare la lunghezza di una stringa nel font corrente, è qui utilizzata per calcolare la posizione e la larghezza della cornice che circonda il titolo. Quando i colori sono impostati (attraverso SetDrawColor(), SetFillColor() e SetTextColor()) e lo spessore della linea è impostata ad 1 mm (invece che 0.2 di predefinito) con SetLineWidth(). Alla fine si mostra la cella (l'ultimo parametro a `true` indica che lo sfondo deve essere riempito).
Il metodo utilizzato per stampare i paragrafi è MultiCell(). Ogni volta che una riga raggiunge l'estremità destra della cella, o se si raggiunge un ritorno a capo, si lancia un'interruzione di riga e si crea automaticamente una nuova cella creata sotto quella precedente. Il testo è giustificato in maniera predefinita.
Si definiscono due proprietà del documento: il titolo (SetTitle()) e l'autore (SetAuthor()). Ci sono molti modi per mostrarli in un riproduttore di PDF. Il primo modo è aprire direttamente il PDF con il lettore PDF e visualizzare le proprietà del documento, spesso attraverso il menù File. A volte si può anche fare click con il tasto destro e selezionare Proprietà del documento (o qualcosa del genere). Un altro modo è di premere la combinazione Ctrl+D.