From bafb3b9680925abcc0a0d997cde37b7cb5c62b26 Mon Sep 17 00:00:00 2001 From: Sashi20 Date: Wed, 27 Feb 2019 13:20:08 +0530 Subject: Made certificates available for case study project --- pdf/fpdf/html2pdf.php | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100755 pdf/fpdf/html2pdf.php (limited to 'pdf/fpdf/html2pdf.php') diff --git a/pdf/fpdf/html2pdf.php b/pdf/fpdf/html2pdf.php new file mode 100755 index 0000000..252514f --- /dev/null +++ b/pdf/fpdf/html2pdf.php @@ -0,0 +1,196 @@ + millimeter at 72 dpi +function px2mm($px){ + return $px*25.4/72; +} + +function txtentities($html){ + $trans = get_html_translation_table(HTML_ENTITIES); + $trans = array_flip($trans); + return strtr($html, $trans); +} +//////////////////////////////////// + +class PDF_HTML extends FPDF +{ +//variables of html parser +var $B; +var $I; +var $U; +var $HREF; +var $fontList; +var $issetfont; +var $issetcolor; + +function PDF_HTML($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=''; + $this->fontlist=array('arial', 'times', 'courier', 'helvetica', 'symbol'); + $this->issetfont=false; + $this->issetcolor=false; +} + +function WriteHTML($html) +{ + //HTML parser + $html=strip_tags($html,"


"); //supprime tous les tags sauf ceux reconnus + $html=str_replace("\n",' ',$html); //remplace retour à la ligne par un espace + $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); //éclate la chaîne avec les balises + foreach($a as $i=>$e) + { + if($i%2==0) + { + //Text + if($this->HREF) + $this->PutLink($this->HREF,$e); + else + $this->Write(5,stripslashes(txtentities($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(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) + $attr[strtoupper($a3[1])]=$a3[2]; + } + $this->OpenTag($tag,$attr); + } + } + } +} + +function OpenTag($tag, $attr) +{ + //Opening tag + switch($tag){ + case 'STRONG': + $this->SetStyle('B',true); + break; + case 'EM': + $this->SetStyle('I',true); + break; + case 'B': + case 'I': + case 'U': + $this->SetStyle($tag,true); + break; + case 'A': + $this->HREF=$attr['HREF']; + break; + case 'IMG': + if(isset($attr['SRC']) && (isset($attr['WIDTH']) || isset($attr['HEIGHT']))) { + if(!isset($attr['WIDTH'])) + $attr['WIDTH'] = 0; + if(!isset($attr['HEIGHT'])) + $attr['HEIGHT'] = 0; + $this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT'])); + } + break; + case 'TR': + case 'BLOCKQUOTE': + case 'BR': + $this->Ln(5); + break; + case 'P': + $this->Ln(10); + break; + case 'FONT': + if (isset($attr['COLOR']) && $attr['COLOR']!='') { + $coul=hex2dec($attr['COLOR']); + $this->SetTextColor($coul['R'],$coul['V'],$coul['B']); + $this->issetcolor=true; + } + if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist)) { + $this->SetFont(strtolower($attr['FACE'])); + $this->issetfont=true; + } + break; + } +} + +function CloseTag($tag) +{ + //Closing tag + if($tag=='STRONG') + $tag='B'; + if($tag=='EM') + $tag='I'; + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,false); + if($tag=='A') + $this->HREF=''; + if($tag=='FONT'){ + if ($this->issetcolor==true) { + $this->SetTextColor(0); + } + if ($this->issetfont) { + $this->SetFont('arial'); + $this->issetfont=false; + } + } +} + +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); +} + +}//end of class +?> -- cgit