2016-10-05 17 views
1

FPDF(multiCell)を使用することにより、単純な単語に異なるタグを適用することができません。FPDF - 結合フォントスタイル

例として:

<em><strong><u>Sample</u></strong></em> 

終わりに、それが唯一のアンダースコアスタイル(最新のもの)をPDFに示されています。それらを組み合わせる可能性はありますか?

答えて

0

ないあなたはFPDF以来FPDFTCPDFを使用している場合は、」Multicell機能は、HTMLを受け入れるようには見えませんが、TCPDFで倍数タグでHTML文字列が動作することを確認:

$ishtml = true; 
$test = '<em><strong><u>Sample</u></strong></em>'; 
$pdf->MultiCell($width, $height, $test, $border, '$align, $fill, $ln, $x, $y, $reseth, $stretch, $ishtml); 
+0

おかげで他の人を助けることを願ってください。 TCPDFを使用する必要があるように見えます。 – FieryCat

1

あなたはまだしたい場合FPDFを使用し、あなたは

<?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); 
    } 
} 
?> 

の下にこのような単純な関数を使用して、任意のHTMLタグを記述することができますし、ちょうどこの

のように、呼び出しによってその機能をお使いのHTMLコードを記述します
<?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(); 
?> 

this HTML sample by FPDF

here the resultが、それはあなたと