TCPDF is an open source library to generate pdf files. Go to TCPDF Official website and check all of the available features and examples.
In this article i will explain how to generate pdf files from html in PHP using the TCPDF library. Download the ZIP file and extract into your project directory.
Configuration:
Configuration file located in tcpdf/configtcpdf_config.php. You can change the general configuration of the TCPDF library.
// Path for PDF fonts.
define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
// Default images directory for example used for logos
define ('K_PATH_IMAGES', K_PATH_MAIN.'../images/');
// Default image logo used be the default Header() method.
define ('PDF_HEADER_LOGO', 'logo.png');
// Header logo image width in user units.
define ('PDF_HEADER_LOGO_WIDTH', 20);
First include TCPDF library into your PHP File.
include_once('TCPDF/tcpdf.php');
Custom Header and Footer:
You can create your custom Header and Footer in PDF file.
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator('Theknowledgeadda');
$pdf->SetTitle('Theknowledgeadda');
// set default header data
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->SetHeaderData('media/google_play.png', PDF_HEADER_LOGO_WIDTH, '', '', array(0,0,0), array(255, 255, 255));
// set default footer data
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->SetMargins(20, 0, 20, true);
Adding new pages:
Adds a new page to the PDF. P or PORTRAIT (default), L or LANDSCAPE.
$pdf->AddPage('P',"A4");
Html & CSS:
TCPDF support CSS code to the HTML text then it will transform this to the corresponding PDF.
$html = <<<EOF
<!-- EXAMPLE OF CSS STYLE -->
<style>
table, th, td {
border: 1px solid black;
}
td {
border: 2px solid blue;
background-color: #ffffee;
}
td.second {
border: 2px dashed green;
}
html, body{
font-family: 'PT Sans', sans-serif;
font-size: 100%;
overflow-x: hidden;
background: #fff;
}
body a{
transition: 0.5s all ease;
-webkit-transition: 0.5s all ease;
-moz-transition: 0.5s all ease;
-o-transition: 0.5s all ease;
-ms-transition: 0.5s all ease;
text-decoration:none;
}
</style>
<table class="first" cellpadding="4" cellspacing="6">
<tr>
<th>User Name</th>
<th>Country</th>
<th>Phone</th>
</tr>
<tr>
<td align="right">Jhon</td>
<td align="right">India</td>
<td align="right">123456789</td>
</tr>
<tr>
<td align="right">Doe</td>
<td align="right">USA</td>
<td align="right">1234567890</td>
</tr>
</table>
<div class="test">example To add a border to a table
<br />And for more information on sample text
<br /><span> There is no one who loves pain itself </span>
<br /><span> Lorem ipsum dolor sit .</span>
</div>
EOF;
$pdf->writeHTML($html, true, false, true, false, '');
//Close and output PDF document
$pdf->Output('example.pdf', 'D');
Parameters of Output() method
- @param string: name:- The name of the file when saved
- @param string: dest:- Destination where to send the document. It can take one of the following values:
- I:- send the file inline to the browser (default).
- D:- send to the browser and force a file download.
- F:- It allows the generated pdf to be saved as a local file.
- S:- return the document as a string.
- FI:- equivalent to F + I option.
- FD:- equivalent to F + D option.