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