PDF en PHP Parte 2: Cabecera y pie de página

Tutorial para crear archivos PDF con cabecera y pie de página desde PHP con ayuda de la librería FPDF.

Requisitos:

  • Servidor Web (Apache)
  • PHP (5.2.0 o superior)
  • Liberia FPDF. Descargar
  • MySQL (opcional)

Estructura de carpetas:

Dentro de la carpeta images va la imagen logo_pb.png la cual utilizaremos como logotipo para colocarlo en la cabecera del PDF.

Primero creamos una clase llamada PDF que herede de la clase FPDF y para agregar un encabezado y pie de página en un archivo PDF y esto se repliquen en todas hojas utilizamos las funciones header y footer.

<?php
	require('fpdf/fpdf.php'); //Agregamos la librería
	
     //Creamos clase PDF que herada de FPDF
	class PDF extends FPDF
	{
		// Cabecera de página
		function Header()
		{
			// Logo
			$this->Image('images/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,'Marko',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<=400;$i++)
        $pdf->Cell(0,10,'Imprimiendo línea número '.$i,0,1);
	$pdf->Output();
?>

El resultado es el siguiente:

En este ejemplo el texto aparecer sobre la imagen del logotipo para arreglar este detalle podemos modificar la funciona header, agregamos 30 saltos de linea en vez de 20 o bajamos el tamaño de la imagen de 33 a 25:

// Logo
$this->Image('images/logo_pb.png',10,8,25);

O

// Salto de línea
$this->Ln(30);

También vemos que el texto aparece con caracteres extraños ya que el texto que tiene acentos esta codificado, para esto utilizamos la función utf8_decode():

$pdf->Cell(0,10,utf8_decode('Imprimiendo línea número ').$i,0,1);

El resultado con las modificaciones es el siguiente:

Enlaces relacionados: