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().