[903] | 1 | <?php
|
---|
| 2 | define('FPDF_FONTPATH','../font/');
|
---|
| 3 | require('../fpdf.php');
|
---|
| 4 |
|
---|
| 5 | class PDF extends FPDF
|
---|
| 6 | {
|
---|
| 7 | var $B;
|
---|
| 8 | var $I;
|
---|
| 9 | var $U;
|
---|
| 10 | var $HREF;
|
---|
| 11 |
|
---|
| 12 | function PDF($orientation='P',$unit='mm',$format='A4')
|
---|
| 13 | {
|
---|
| 14 | //Call parent constructor
|
---|
| 15 | $this->FPDF($orientation,$unit,$format);
|
---|
| 16 | //Initialization
|
---|
| 17 | $this->B=0;
|
---|
| 18 | $this->I=0;
|
---|
| 19 | $this->U=0;
|
---|
| 20 | $this->HREF='';
|
---|
| 21 | }
|
---|
| 22 |
|
---|
| 23 | function WriteHTML($html)
|
---|
| 24 | {
|
---|
| 25 | //HTML parser
|
---|
| 26 | $html=str_replace("\n",' ',$html);
|
---|
| 27 | $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
|
---|
| 28 | foreach($a as $i=>$e)
|
---|
| 29 | {
|
---|
| 30 | if($i%2==0)
|
---|
| 31 | {
|
---|
| 32 | //Text
|
---|
| 33 | if($this->HREF)
|
---|
| 34 | $this->PutLink($this->HREF,$e);
|
---|
| 35 | else
|
---|
| 36 | $this->Write(5,$e);
|
---|
| 37 | }
|
---|
| 38 | else
|
---|
| 39 | {
|
---|
| 40 | //Tag
|
---|
| 41 | if($e{0}=='/')
|
---|
| 42 | $this->CloseTag(strtoupper(substr($e,1)));
|
---|
| 43 | else
|
---|
| 44 | {
|
---|
| 45 | //Extract attributes
|
---|
| 46 | $a2=explode(' ',$e);
|
---|
| 47 | $tag=strtoupper(array_shift($a2));
|
---|
| 48 | $attr=array();
|
---|
| 49 | foreach($a2 as $v)
|
---|
| 50 | if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
|
---|
| 51 | $attr[strtoupper($a3[1])]=$a3[2];
|
---|
| 52 | $this->OpenTag($tag,$attr);
|
---|
| 53 | }
|
---|
| 54 | }
|
---|
| 55 | }
|
---|
| 56 | }
|
---|
| 57 |
|
---|
| 58 | function OpenTag($tag,$attr)
|
---|
| 59 | {
|
---|
| 60 | //Opening tag
|
---|
| 61 | if($tag=='B' or $tag=='I' or $tag=='U')
|
---|
| 62 | $this->SetStyle($tag,true);
|
---|
| 63 | if($tag=='A')
|
---|
| 64 | $this->HREF=$attr['HREF'];
|
---|
| 65 | if($tag=='BR')
|
---|
| 66 | $this->Ln(5);
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | function CloseTag($tag)
|
---|
| 70 | {
|
---|
| 71 | //Closing tag
|
---|
| 72 | if($tag=='B' or $tag=='I' or $tag=='U')
|
---|
| 73 | $this->SetStyle($tag,false);
|
---|
| 74 | if($tag=='A')
|
---|
| 75 | $this->HREF='';
|
---|
| 76 | }
|
---|
| 77 |
|
---|
| 78 | function SetStyle($tag,$enable)
|
---|
| 79 | {
|
---|
| 80 | //Modify style and select corresponding font
|
---|
| 81 | $this->$tag+=($enable ? 1 : -1);
|
---|
| 82 | $style='';
|
---|
| 83 | foreach(array('B','I','U') as $s)
|
---|
| 84 | if($this->$s>0)
|
---|
| 85 | $style.=$s;
|
---|
| 86 | $this->SetFont('',$style);
|
---|
| 87 | }
|
---|
| 88 |
|
---|
| 89 | function PutLink($URL,$txt)
|
---|
| 90 | {
|
---|
| 91 | //Put a hyperlink
|
---|
| 92 | $this->SetTextColor(0,0,255);
|
---|
| 93 | $this->SetStyle('U',true);
|
---|
| 94 | $this->Write(5,$txt,$URL);
|
---|
| 95 | $this->SetStyle('U',false);
|
---|
| 96 | $this->SetTextColor(0);
|
---|
| 97 | }
|
---|
| 98 | }
|
---|
| 99 |
|
---|
| 100 | $html='You can now easily print text mixing different
|
---|
| 101 | styles : <B>bold</B>, <I>italic</I>, <U>underlined</U>, or
|
---|
| 102 | <B><I><U>all at once</U></I></B>!<BR>You can also insert links
|
---|
| 103 | on text, such as <A HREF="http://www.fpdf.org">www.fpdf.org</A>,
|
---|
| 104 | or on an image: click on the logo.';
|
---|
| 105 |
|
---|
| 106 | $pdf=new PDF();
|
---|
| 107 | //First page
|
---|
| 108 | $pdf->AddPage();
|
---|
| 109 | $pdf->SetFont('Arial','',20);
|
---|
| 110 | $pdf->Write(5,'To find out what\'s new in this tutorial, click ');
|
---|
| 111 | $pdf->SetFont('','U');
|
---|
| 112 | $link=$pdf->AddLink();
|
---|
| 113 | $pdf->Write(5,'here',$link);
|
---|
| 114 | $pdf->SetFont('');
|
---|
| 115 | //Second page
|
---|
| 116 | $pdf->AddPage();
|
---|
| 117 | $pdf->SetLink($link);
|
---|
| 118 | $pdf->Image('logo.png',10,10,30,0,'','http://www.fpdf.org');
|
---|
| 119 | $pdf->SetLeftMargin(45);
|
---|
| 120 | $pdf->SetFontSize(14);
|
---|
| 121 | $pdf->WriteHTML($html);
|
---|
| 122 | $pdf->Output();
|
---|
| 123 | ?>
|
---|