Cabecera, pie, salto de página e imagen

Aquí tenemos un ejemplo de dos páginas con cabacera, pie de página y logotipo:

<?php
require('fpdf.php');

class
PDF extends FPDF
{
//Cabecera de página
function Header()
{
    
//Logo
    
$this->Image('logo_pb.png',10,8,33);
    
//Arial bold 15
    
$this->SetFont('Arial','B',15);
    
//Movernos a la derecha
    
$this->Cell(80);
    
//Título
    
$this->Cell(30,10,'Title',1,0,'C');
    
//Salto de línea
    
$this->Ln(20);
}

//Pie de página
function Footer()
{
    
//Posición: a 1,5 cm del final
    
$this->SetY(-15);
    
//Arial italic 8
    
$this->SetFont('Arial','I',8);
    
//Número de página
    
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}

//Creación del objeto de la clase heredada
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for(
$i=1;$i<=40;$i++)
    
$pdf->Cell(0,10,'Imprimiendo línea número '.$i,0,1);
$pdf->Output();
?>

Este ejemplo hace uso de los métodos Header() y Footer() para procesar las cabeceras y pies de páginas. Se llaman automáticamente. Ya existen en la clase FPDF origuinal, pero no hacen nada. Por ello, tenemos que heredar la clase y sobreescribirlos.

El logotipo se imprime con el método Image() especificando su esquina superior izquierda y su anchura. La altura se calcula automáticamente respetando las proporciones de la imagen.

Para imprimir el número de página, se le pasa un valor nulo (null) como ancho de la celda. Eso significa que la celda se extenderá hasta el margen derecho de la página; puede ser útil centrar el texto. El número actual de la página se devuelve por el métodos PageNo(); mientras que el número total de páginas se obtiene mediante un valor especial de {nb} que será sustituido cuando se cierre el documento (suponiendo que usted antes utilizara AliasNbPages()).
Observe el uso del método SetY() que le permite especificar la posición en una ubicación absoluta respecto del origen de coordenadas de la página, empezando por el principio o por el final.

Otra característica interesante se usa en el ejemplo: el salto automático de página. Tan pronto como una celda cruza el límite máximo de la página (a 2 cm del final, por defecto), se ejecuta un salto y se recupera la fuente. Aunque la cabecera y el pie usan su propia fuente (Arial), el cuerpo del documento continua con Times. Este mecanismo automático de recuperación también se aplica a los colores y al ancho de línea. El límite que fuerza los saltos de página puede establecerse con SetAutoPageBreak().