# 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.