Генерация PDF файлов на php через библиотеку fpdf

16.11.2015

Пример создания PDF файла используя библиотеку fpdf.

Скачать все файлы

01.php (Download)

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

  class c_PDF extends FPDF
  {
    var $B;
    var $I;
    var $U;
    var $HREF;

  function PDF($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='';
  }

  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);
            else
                $this->Write(5,$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
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,true);
    if($tag=='A')
        $this->HREF=$attr['HREF'];
    if($tag=='BR')
        $this->Ln(5);
  }

  function CloseTag($tag)
  {
    //Closing tag
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,false);
    if($tag=='A')
        $this->HREF='';
  }

  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='You can now easily print text mixing different styles: <b>bold</b>, <i>italic</i>,
  <u>underlined</u>, or <b><i><u>all at once</u></i></b>!<br><br>You can also insert links on
  text, such as <a href="http://www.fpdf.org">www.fpdf.org</a>, or on an image: click on the logo.';

  $pdf=new c_PDF();
  //First page
  $pdf->AddPage();
  $pdf->SetFont('Arial','',20);
  $pdf->SetFontSize(14);
  $pdf->WriteHTML($html);
  $pdf->Output();

?>


Категории: PHP
Яндекс.Метрика