Most of the programmers seeking for Html to PDF conversion solution. Now your search end here. To convert a PDF from HTML document, we use open source fpdf library. Using this library you can implement this conversion very easily.
All the required methods are defined in fpdf library, we just pass parameters to library functions and get the result. Download fdpf library from here: http://www.fpdf.org/en/download.php
We also published another post to Convert HTML to PDF using Dompdf.
In this post, we describe conversion in a very simple way. Just create HTML form and submit data to show in PDF format. Let’s start with the tutorial step by step.
Convert HTML to PDF Document in PHP with fpdf
1) Create a simple HTML form to submit the data. Check below code here:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<html> <body> <form method="post" action="createpdf.php"> <input id="name" name="name" type="text"> <input id="email" name="email" type="text"> <input id="phone" name="phone" type="text"> <button type="submit">Submit</button> </body> </html> |
2) Now you have to create another createpdf.php file to show output on a web browser. see below code for this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<?php require('WriteHTML.php'); $pdf=new PDF_HTML(); $pdf->AliasNbPages(); //add page automatically for its true parameter $pdf->SetAutoPageBreak(true, 15); $pdf->AddPage(); //add logo image here $pdf->Image('images/logo.png',18,13,33); //set font style $pdf->SetFont('Arial','B',14); $pdf->WriteHTML('<para><h1>Codefixup.com - API and Web development Tutorial Website</h1><br> Website: <u>www.codefixup.com</u></para><br><br>How to Convert HTML to PDF with fpdf example'); //set the form of pdf $pdf->SetFont('Arial','B',8); //assign the form post value in a variable and pass it. $htmlTable='<TABLE> <TR> <TD>Name:</TD> <TD>'.$_POST['name'].'</TD> </TR> <TR> <TD>Email:</TD> <TD>'.$_POST['email'].'</TD> </TR> <TR> <TD>Phone:</TD> <TD>'.$_POST['phone'].'</TD> </TR> </TABLE>'; //Write HTML to pdf file and output that file on the web browser. $pdf->WriteHTML2("<br><br>$htmlTable"); $pdf->SetFont('Arial','B',6); $pdf->Output(); ?> |
Below is the WriteHTML.php code file. This will include fpdf library path.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
<?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); } } ?> |
By following the above simple steps you can create a PDF from HTML easily. Most of the use Html to Pdf conversion in web applications like creating sale slips, order receipt,s and invoices etc.
Also Check This:
Create Search Form Using AngularJS and PHP
Print Fedex Shipping label via API PHP
Authenticate with D&B Direct API Web Service
Add New Product in Bigcommerce via API
Connect With Cloudshare Rest API
If you want to use more Style CSS attribute to create PDF file than you can use Dompdf library also. Its supports many bootstrap CSS also.
Just try this code and share it with your friends also. Thanks for spending time to read this post. If you need any assistance to implement this, feel free to contact us.
Hi,
It is quite simple, appreciate this useful post.
Thanks