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.