Write HTML

This is an enhancement of the WriteHTML() method from tutorial 6


Author: Aramis
License: FPDF


This is an enhancement of the WriteHTML() method from tutorial 6. Two tags have been added: P and HR. P with the ALIGN attribute equal to center allows to center a line. HR adds a horizontal rule, either through the whole page or with a width given by the WIDTH attribute.


<?php require('fpdf.php'); class PDF_HTML extends FPDF { var $B=0; var $I=0; var $U=0; var $HREF=''; var $ALIGN=''; 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); elseif($this->ALIGN=='center') $this->Cell(0, 5, $e, 0, 1, 'C'); else $this->Write(5, $e); } else { //Tag if($e[0]=='/') $this->CloseTag(strtoupper(substr($e, 1))); else { //Extract properties $a2=explode(' ', $e); $tag=strtoupper(array_shift($a2)); $prop=array(); foreach($a2 as $v) { if(preg_match('/([^=]*)=["\']?([^"\']*)/', $v, $a3)) $prop[strtoupper($a3[1])]=$a3[2]; } $this->OpenTag($tag, $prop); } } } } function OpenTag($tag, $prop) { //Opening tag if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag, true); if($tag=='A') $this->HREF=$prop['HREF']; if($tag=='BR') $this->Ln(5); if($tag=='P') $this->ALIGN=$prop['ALIGN']; if($tag=='HR') { if( !empty($prop['WIDTH']) ) $Width = $prop['WIDTH']; else $Width = $this->w - $this->lMargin-$this->rMargin; $this->Ln(2); $x = $this->GetX(); $y = $this->GetY(); $this->SetLineWidth(0.4); $this->Line($x, $y, $x+$Width, $y); $this->SetLineWidth(0.2); $this->Ln(2); } } function CloseTag($tag) { //Closing tag if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag, false); if($tag=='A') $this->HREF=''; if($tag=='P') $this->ALIGN=''; } 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); } } ?>


<?php require('WriteHTML.php'); $pdf=new PDF_HTML(); $pdf->AddPage(); $pdf->SetFont('Arial'); $pdf->WriteHTML('You can<br><p align="center">center a line</p>and add a horizontal rule:<br><hr>'); $pdf->Output(); ?>
View the result here.




http://www.fpdf.org/en/script/script41.php, zuletzt abgerufen 02.10.2016 15:11