2013-04-22 6 views
0

FPDF의 최신 버전이 있으며 FPDF를 사용하도록 확장하려고합니다. WriteHTML 클래스를 실제로 사용하기 전까지는 모든 것이 잘 작동합니다. 여기서?>WriteHTML FPDF addon을 렌더링하지 않습니다.

/** 
    * FPDF functionality to load page as a PDF 
    **/ 

//retrieve variables from singlerecipe.php using $post 
$title = $_REQUEST["title"]; 
$description = $_REQUEST["description"]; 

//loads FPDF class 
//require '/fpdf/fpdf.php'; 
require 'WriteHTML.php'; 

//starts new FPDF 
$pdf=new FPDF(); 

// tells FPDF to add a new page to the PDF file 
$pdf->AddPage(); 
$pdf->SetDisplayMode(real,'default'); 
// set font 
$pdf->SetFont('Arial','B',16); 
//$html='<hr>'; 
//sets width and height 
$pdf->SetXY(0,10); 
$pdf->Cell(20,10,$title); 
$pdf->SetXY(150,10); 
$pdf->Cell(40,10,'logo'); 
$pdf->SetXY(0,30); 
$pdf->Cell(30,10,'Description'); 
$pdf->WriteHTML($description); 

//outputs a PDF 
$pdf->Output(); 
exit; 

포스트 으 $ 정보의 출력의 일례이다.

<p>2.5 Meat/Meat Alternative</p> 

마지막으로 여기에 포함시키려는 WriteHTML이라는 클래스가 있습니다. 또한

<?php 
require('/fpdf/fpdf.php'); 


//function hex2dec 
//returns an associative array (keys: R,G,B) from 
//a hex html code (e.g. #3FE5AA) 
function hex2dec($couleur = "#000000"){ 
    $R = substr($couleur, 1, 2); 
    $rouge = hexdec($R); 
    $V = substr($couleur, 3, 2); 
    $vert = hexdec($V); 
    $B = substr($couleur, 5, 2); 
    $bleu = hexdec($B); 
    $tbl_couleur = array(); 
    $tbl_couleur['R']=$rouge; 
    $tbl_couleur['V']=$vert; 
    $tbl_couleur['B']=$bleu; 
    return $tbl_couleur; 
} 

//conversion pixel -> 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,"<b><u><i><a><img><p><br><strong><em><font><tr><blockquote>"); //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 
?> 

나는 ... 나는 그것이 나에게 어떤 문제를 제공 할 수있다 생각하고 그래서 워드 프레스 페이지에이 기능을 통합하려고하지만, 그것은 여전히 ​​원래 FPDF 클래스와 함께 작동?

답변

0

전체 WriteHTML 클래스를 건너 뛰고 strip_tags, utf8_decode 및 Write 메서드를 사용하여 형식을 지정하면 반쯤 해결됩니다. 그것의 html이 아니라 그 동안 할 것입니다.

$description = strip_tags(utf8_decode($_REQUEST["description"])); 

$pdf->Write(5, $description); 

이 순간에 충분합니다.

관련 문제