En-tête, pied de page, saut de page et image

Voici un exemple de deux pages avec en-tête, pied de page et logo :
<?php
require('fpdf.php');

class PDF extends FPDF
{
// En-tête
function Header()
{
    // Logo
    $this->Image('logo.png',10,6,30);
    // Police Arial gras 15
    $this->SetFont('Arial','B',15);
    // Décalage à droite
    $this->Cell(80);
    // Titre
    $this->Cell(30,10,'Titre',1,0,'C');
    // Saut de ligne
    $this->Ln(20);
}

// Pied de page
function Footer()
{
    // Positionnement à 1,5 cm du bas
    $this->SetY(-15);
    // Police Arial italique 8
    $this->SetFont('Arial','I',8);
    // Numéro de page
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}

// Instanciation de la classe dérivée
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
    $pdf->Cell(0,10,'Impression de la ligne numéro '.$i,0,1);
$pdf->Output();
?>

[Démo]

Cet exemple exploite les méthodes Header() et Footer() pour traiter les en-têtes et pieds de page. Elles sont appelées automatiquement. Leur implémentation dans la classe FPDF est vide, aussi doit-on dériver la classe et les redéfinir.

Le logo est imprimé grâce à la méthode Image() en précisant le coin supérieur gauche et la largeur. La hauteur est calculée automatiquement afin de respecter la proportion de l'image.

Pour imprimer le numéro de page, une valeur nulle est passée comme largeur de cellule. Cela signifie que cette dernière doit s'étendre jusqu'à la marge droite de la page ; c'est pratique pour centrer du texte. Le numéro de page courant est retourné par la méthode PageNo() ; le nombre total de pages s'obtient quant à lui grâce à la valeur spéciale {nb} qui sera substituée lorsque le document sera terminé (à condition d'avoir au préalable appelé AliasNbPages()).
A noter l'utilisation de la méthode SetY() qui permet de se positionner de manière absolue dans la page, à partir du haut ou du bas.

Une autre fonctionnalité intéressante est ici utilisée : le saut de page automatique. Lorsqu'une cellule descend trop bas (à 2 centimètres du bas de la page par défaut), un saut de page est effectué et la police est restaurée. Bien que l'en-tête et le pied de page spécifient leur propre police (Arial), le corps de la page continue en Times. Ce principe de restauration automatique s'applique aussi à l'épaisseur des traits et aux couleurs. Le seuil de déclenchement du saut de page se règle avec SetAutoPageBreak().