Saltos de línea y colores

Continuemos con un ejemplo que imprime párrafos justificados. También ilustra el uso de colores.

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

class
PDF extends FPDF
{
function
Header()
{
    global
$title;

    
//Arial bold 15
    
$this->SetFont('Arial','B',15);
    
//Calculamos ancho y posición del título.
    
$w=$this->GetStringWidth($title)+6;
    
$this->SetX((210-$w)/2);
    
//Colores de los bordes, fondo y texto
    
$this->SetDrawColor(0,80,180);
    
$this->SetFillColor(230,230,0);
    
$this->SetTextColor(220,50,50);
    
//Ancho del borde (1 mm)
    
$this->SetLineWidth(1);
    
//Título
    
$this->Cell($w,9,$title,1,1,'C',1);
    
//Salto de línea
    
$this->Ln(10);
}

function
Footer()
{
    
//Posición a 1,5 cm del final
    
$this->SetY(-15);
    
//Arial itálica 8
    
$this->SetFont('Arial','I',8);
    
//Color del texto en gris
    
$this->SetTextColor(128);
    
//Número de página
    
$this->Cell(0,10,'Página '.$this->PageNo(),0,0,'C');
}

function
ChapterTitle($num,$label)
{
    
//Arial 12
    
$this->SetFont('Arial','',12);
    
//Color de fondo
    
$this->SetFillColor(200,220,255);
    
//Título
    
$this->Cell(0,6,"Capítulo $num : $label",0,1,'L',1);
    
//Salto de línea
    
$this->Ln(4);
}

function
ChapterBody($file)
{
    
//Leemos el fichero
    
$f=fopen($file,'r');
    
$txt=fread($f,filesize($file));
    
fclose($f);
    
//Times 12
    
$this->SetFont('Times','',12);
    
//Imprimimos el texto justificado
    
$this->MultiCell(0,5,$txt);
    
//Salto de línea
    
$this->Ln();
    
//Cita en itálica
    
$this->SetFont('','I');
    
$this->Cell(0,5,'(fin del extracto)');
}

function
PrintChapter($num,$title,$file)
{
    
$this->AddPage();
    
$this->ChapterTitle($num,$title);
    
$this->ChapterBody($file);
}
}

$pdf=new PDF();
$title='20000 Leguas de Viaje Submarino';
$pdf->SetTitle($title);
$pdf->SetAuthor('Julio Verne');
$pdf->PrintChapter(1,'UN RIZO DE HUIDA','20k_c1.txt');
$pdf->PrintChapter(2,'LOS PROS Y LOS CONTRAS','20k_c2.txt');
$pdf->Output();
?>

El método GetStringWidth() le permite determinar la longitud de una cadena en el tipo de letra actual, y se usa aquí para calcular la posición y ancho del borde que rodea al título. Después se establecen los colores (mediante SetDrawColor(), SetFillColor() y SetTextColor()) y el borde de la línea se establece en 1 mm (en contra de los 0,2 por defecto) con SetLineWidth(). Finalmente, imprimimos la celda (el último parámetro a 1 indica que debe colorearse el fondo).

El método usado para imprimir los párrafos es MultiCell(). Cada vez que la línea llega al extremo derecho de la celda o aparece un carácter de fin de línea, se ejecuta un salto de línea y se crea automáticamente otra celda debajo de la actual. El texto se encuentra justificado por defecto.

Se definen dos propiedades del documento: título (SetTitle()) y autor (SetAuthor()). Las propiedades pueden verse de dos maneras. La primera es abrir directamente el documento con Acrobat Reader, irse al menú Archivo, Información del documento, General. La segunda, también disponible por la extensión (plug-in) de Acrobat Reader, es pulsar en el triángulo situado inmediatamente encima de la barra de desplazamiento de la derecha y elegir Información del documento.