Intestazione, pi di pagina, cambio pagina e immagini

Ecco un esempio di due pagine con intestazione, pi di pagina, e logo:
<?php
require('fpdf.php');

class PDF extends FPDF
{
// Page header
function Header()
{
    // Logo
    $this->Image('logo.png',10,6,30);
    // Arial bold 15
    $this->SetFont('Arial','B',15);
    // Move to the right
    $this->Cell(80);
    // Title
    $this->Cell(30,10,'Title',1,0,'C');
    // Line break
    $this->Ln(20);
}

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

// Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
    $pdf->Cell(0,10,'Printing line number '.$i,0,1);
$pdf->Output();
?>

[Demo]

Questo esempio fa uso dei metodi Header() e Footer() per processare le intestazioni e i pi di pagina. Sono richiamati automaticamente. Esistono gi nella classe FPDF ma non fanno nulla, quindi dobbiamo estendere la classe e fare un override di questi metodi.

Il logo stampato con il metodo Image() specificando il suo angolo in alto a sinistra e la sua larghezza. L'altezza calcolata automaticamente per rispettare le proporzioni dell'immagine.

Per stampare il numero della pagina, un valore null passato alla larghezza della cella. Significa che la cella dovrebbe estendersi fino al margine destro della pagina; questo comodo per centrare il testo. Il numero della pagina corrente ritornato dal metodo PageNo(); ed il numero totale delle pagine ottenibile attraverso il codice speciale {nb} che sostituito nel testo quando il documento concluso (a condizione di chiamare prima AliasNbPages()).
Nota che l'uso del metodo SetY() che permette di posizionarsi ad una posizione assoluta nella pagina, parte dall'inizio o dal fondo della pagina.

Qui si utilizza un'altra caratteristica interessante: l'interruzione di pagina automatica. Non appena la cella sorpassa un limite nella pagina (di predefinito sono 2 centimetri dal fondo), si lancia l'interruzione e il font ripristinato. Sebbene l'intestazione ed il pi di pagina abbiano il loro font (Arial), il corpo continua con Times. Questo meccanismo di ripristino automatico si applica anche ai colori e alla larghezza della linea. Il limite a cui si evoca l'interruzione di pagina pu essere impostato con SetAutoPageBreak().