how to convert html to pdf in php?

Today, We want to share with you how to convert html to pdf in php.In this post we will show you html to pdf using php, hear for convert html to pdf in php with dompdf we will give you demo and example for implement.In this post, we will learn about html to pdf using php with an example.

Convert HTML to PDF in PHP with Dompdf

Here are some online services that you can use:

  • PDFShift
  • Restpack
  • PDF Layer
  • DocRaptor
  • HTMLPDFAPI
  • HTML to PDF Rocket

How to convert HTML to PDF file in PHP?

index.php

<html>
<head>
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<title>How to convert html to pdf  | www.pakainfo.com</title>
</head>

<body>

<div class="container">
      <form class="contact-us form-horizontal" action="dopdf.php" method="post">
        <legend>Fill Form and submit to generate PDF</legend>        
        <div class="control-group">
            <label class="control-label">Name</label>
            <div class="controls">
                <div class="input-prepend">
                <span class="add-on"><i class="icon-user"></i></span>
                    <input type="text" class="input-xlarge" name="name" placeholder="Name">
                </div>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">Email</label>
            <div class="controls">
                <div class="input-prepend">
                <span class="add-on"><i class="icon-envelope"></i></span>
                    <input type="text" class="input-xlarge" name="email" placeholder="Email">
                </div>
            </div>    
        </div>
        <div class="control-group">
            <label class="control-label">Url</label>
            <div class="controls">
                <div class="input-prepend">
                <span class="add-on"><i class="icon-globe"></i></span>
                    <input type="text" id="url" class="input-xlarge" name="url" placeholder="http://www.pakainfo.com">
                </div>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">Comment</label>
            <div class="controls">
                <div class="input-prepend">
                <span class="add-on"><i class="icon-pencil"></i></span>
                    <textarea name="comment" class="span4" rows="4" cols="80" placeholder="Comment (Max 200 characters)"></textarea>
                </div>
            </div>
        </div>
        <div class="control-group">
          <div class="controls">
            <button type="submit" class="btn btn-primary">Submit</button>
            <button type="button" class="btn">Cancel</button>
          </div>    
        </div>
      </form>
</div>
</body>
</html>

submitInHTMLCode.php

<?php
//HTML2PDF by Clément Lavoillotte

require('fpdf17/fpdf.php');


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


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 GENERATED_FILE extends FPDF
{
//variables of html parser
protected $B;
protected $I;
protected $U;
protected $HREF;
protected $fontList;
protected $issetfont;
protected $issetcolor;

function __construct($orientation='P', $unit='mm', $format='A4')
{
    //Call parent constructor
    parent::__construct($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 submitInHTMLCode($html)
{

    $html=strip_tags($html,"<b><u><i><a><img><p><br><strong><em><font><tr><blockquote>");
    $html=str_replace("\n",' ',$html); //remplace retour à la ligne par un espace
    $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); 
    foreach($a as $i=>$e)
    {
        if($i%2==0)
        {

            if($this->HREF)
                $this->PutLink($this->HREF,$e);
            else
                $this->Write(5,stripslashes(txtentities($e)));
        }
        else
        {

            if($e[0]=='/')
                $this->CloseTag(strtoupper(substr($e,1)));
            else
            {
                //Extract attributes
                $a2=explode(' ',$e);
                $tag=strtoupper(array_shift($a2));
                $swiselogs=array();
                foreach($a2 as $v)
                {
                    if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
                        $swiselogs[strtoupper($a3[1])]=$a3[2];
                }
                $this->OpenTag($tag,$swiselogs);
            }
        }
    }
}

function OpenTag($tag, $swiselogs)
{

    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=$swiselogs['HREF'];
            break;
        case 'IMG':
            if(isset($swiselogs['SRC']) && (isset($swiselogs['WIDTH']) || isset($swiselogs['HEIGHT']))) {
                if(!isset($swiselogs['WIDTH']))
                    $swiselogs['WIDTH'] = 0;
                if(!isset($swiselogs['HEIGHT']))
                    $swiselogs['HEIGHT'] = 0;
                $this->Image($swiselogs['SRC'], $this->GetX(), $this->GetY(), px2mm($swiselogs['WIDTH']), px2mm($swiselogs['HEIGHT']));
            }
            break;
        case 'TR':
        case 'BLOCKQUOTE':
        case 'BR':
            $this->Ln(5);
            break;
        case 'P':
            $this->Ln(10);
            break;
        case 'FONT':
            if (isset($swiselogs['COLOR']) && $swiselogs['COLOR']!='') {
                $coul=hex2dec($swiselogs['COLOR']);
                $this->SetTextColor($coul['R'],$coul['V'],$coul['B']);
                $this->issetcolor=true;
            }
            if (isset($swiselogs['FACE']) && in_array(strtolower($swiselogs['FACE']), $this->fontlist)) {
                $this->SetFont(strtolower($swiselogs['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)
{
    //Update 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)
{
    $this->SetTextColor(0,0,255);
    $this->SetStyle('U',true);
    $this->Write(5,$txt,$URL);
    $this->SetStyle('U',false);
    $this->SetTextColor(0);
}

}//end of class
?>

dopdf.php

<?php
require('submitInHTMLCode.php');

$doc_addObject=new GENERATED_FILE();

$doc_addObject->AliasNbPages();
$doc_addObject->SetAutoPageBreak(true, 15);

$doc_addObject->AddPage();
$doc_addObject->Image('pakainfo.png',18,13,33);
$doc_addObject->SetFont('Arial','B',14);
$doc_addObject->submitInHTMLCode('<para><h2>TamilRockers: Download Tamil Movies Free</h2><br>
Website: <u>www.pakainfo.com</u></para><br><br>Tamil Rockers is a Tamil movie download website which is a site from where you download movies.');

$doc_addObject->SetFont('Arial','B',7); 
$all_data_content='<TABLE>
<TR>
<TD>Name:</TD>
<TD>'.$_POST['name'].'</TD>
</TR>
<TR>
<TD>Email:</TD>
<TD>'.$_POST['email'].'</TD>
</TR>
<TR>
<TD>URl:</TD>
<TD>'.$_POST['url'].'</TD>
</TR>
<TR>
<TD>Comment:</TD>
<TD>'.$_POST['comment'].'</TD>
</TR>
</TABLE>';
$doc_addObject->submitInHTMLCode("<br><br><br>$all_data_content");
$doc_addObject->SetFont('Arial','B',6);
$doc_addObject->Output(); 
?>

$doc_addObject->Image('pakainfo.png',18,13,33);
$doc_addObject->SetFont('Arial','B',14);

$doc_addObject->SetFont('Arial','B',7); 

$doc_addObject->submitInHTMLCode("<br><br><br>$all_data_content");
$doc_addObject->Output();

I hope you get an idea about html to pdf converter php source code.
I would like to have feedback on my infinityknow.com blog.
Your valuable feedback, question, or comments about this article are always welcome.
If you enjoyed and liked this post, don’t forget to share.