Line breaks and colors

Let's continue with an example which prints justified paragraphs. It also illustrates the use of colors.

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

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

    
//Arial bold 15
    
$this->SetFont('Arial','B',15);
    
//Calculate width of title and position
    
$w=$this->GetStringWidth($title)+6;
    
$this->SetX((210-$w)/2);
    
//Colors of frame, background and text
    
$this->SetDrawColor(0,80,180);
    
$this->SetFillColor(230,230,0);
    
$this->SetTextColor(220,50,50);
    
//Thickness of frame (1 mm)
    
$this->SetLineWidth(1);
    
//Title
    
$this->Cell($w,9,$title,1,1,'C',1);
    
//Line break
    
$this->Ln(10);
}

function
Footer()
{
    
//Position at 1.5 cm from bottom
    
$this->SetY(-15);
    
//Arial italic 8
    
$this->SetFont('Arial','I',8);
    
//Text color in gray
    
$this->SetTextColor(128);
    
//Page number
    
$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
}

function
ChapterTitle($num,$label)
{
    
//Arial 12
    
$this->SetFont('Arial','',12);
    
//Background color
    
$this->SetFillColor(200,220,255);
    
//Title
    
$this->Cell(0,6,"Chapter $num : $label",0,1,'L',1);
    
//Line break
    
$this->Ln(4);
}

function
ChapterBody($file)
{
    
//Read text file
    
$f=fopen($file,'r');
    
$txt=fread($f,filesize($file));
    
fclose($f);
    
//Times 12
    
$this->SetFont('Times','',12);
    
//Output justified text
    
$this->MultiCell(0,5,$txt);
    
//Line break
    
$this->Ln();
    
//Mention in italics
    
$this->SetFont('','I');
    
$this->Cell(0,5,'(end of excerpt)');
}

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

$pdf=new PDF();
$title='20000 Leagues Under the Seas';
$pdf->SetTitle($title);
$pdf->SetAuthor('Jules Verne');
$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
$pdf->Output();
?>

The GetStringWidth() method allows to determine the length of a string in the current font, which is used here to calculate the position and the width of the frame surrounding the title. Then colors are set (via SetDrawColor(), SetFillColor() and SetTextColor()) and the thickness of the line is set to 1 mm (against 0.2 by default) with SetLineWidth(). Finally, we output the cell (the last parameter to 1 indicates that the background must be filled).

The method used to print the paragraphs is MultiCell(). Each time a line reaches the right extremity of the cell or a carriage-return character is met, a line break is issued and a new cell automatically created under the current one. Text is justified by default.

Two document properties are defined: title (SetTitle()) and author (SetAuthor()). Properties can be viewed by two means. First is open the document directly with Acrobat Reader, go to the File menu, Document info, General. Second, also available from the plug-in, is click on the triangle just above the right scrollbar and choose Document info.