<?php require('fpdf.php');
class
PDF extends FPDF { var
$B; var
$I; var
$U; var
$HREF; function
PDF($orientation='P',$unit='mm',$format='A4') {
//Call parent constructor
$this->FPDF($orientation,$unit,$format);
//Initialization
$this->B=0;
$this->I=0;
$this->U=0;
$this->HREF=''; }
function
WriteHTML($html) {
//HTML parser
$html=str_replace("\n",'
',$html);
$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); foreach(
$a as $i=>$e) { if(
$i%2==0) {
//Text
if($this->HREF)
$this->PutLink($this->HREF,$e); else
$this->Write(5,$e); } else {
//Tag
if($e{0}=='/')
$this->CloseTag(strtoupper(substr($e,1))); else {
//Extract attributes
$a2=explode(' ',$e);
$tag=strtoupper(array_shift($a2));
$attr=array(); foreach(
$a2 as $v) if(
ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
$attr[strtoupper($a3[1])]=$a3[2];
$this->OpenTag($tag,$attr); } } } }
function
OpenTag($tag,$attr) {
//Opening tag
if($tag=='B' or $tag=='I' or
$tag=='U')
$this->SetStyle($tag,true); if(
$tag=='A')
$this->HREF=$attr['HREF']; if(
$tag=='BR')
$this->Ln(5); } function
CloseTag($tag) {
//Closing tag
if($tag=='B' or $tag=='I' or
$tag=='U')
$this->SetStyle($tag,false); if(
$tag=='A')
$this->HREF=''; }
function
SetStyle($tag,$enable) {
//Modify style and select corresponding
font
$this->$tag+=($enable
? 1 : -1);
$style=''; foreach(array(
'B','I','U') as $s) if(
$this->$s>0)
$style.=$s;
$this->SetFont('',$style); } function
PutLink($URL,$txt) {
//Put a hyperlink
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0); } } $html='You can now easily
print text mixing different styles :
<B>bold</B>, <I>italic</I>,
<U>underlined</U>, or <B><I><U>all
at once</U></I></B>!<BR>You can also
insert links on text, such as <A
HREF="http://www.fpdf.org">www.fpdf.org</A>, or
on an image: click on the logo.'
; $pdf=new
PDF(); //First
page
$pdf->AddPage(); $pdf->SetFont('Arial','',20); $pdf->Write(5,'To find out what\'s
new in this tutorial, click '); $pdf->SetFont('','U'); $link=$pdf->AddLink(); $pdf->Write(5,'here',$link); $pdf->SetFont(''); //Second page $pdf->AddPage(); $pdf->SetLink($link); $pdf->Image('logo.png',10,10,30,0,'','http://www.fpdf.org'); $pdf->SetLeftMargin(45); $pdf->SetFontSize(14); $pdf->WriteHTML($html); $pdf->Output(); ?>
|