HTML2PDF is an article explaining how PHP can
be used to convert HTML pages and information into PDF documents. The
method can be used to easily convert filetypes, store information, and
more.
Dynamic PDF files using HTML and PHP
Creating Dynamic PDF files using HTML and PHP
There
always arise a need for converting content from one file format to
another one. Some may need to convert some text into HTML and some may
need to convert some HTML content to an image format. The main reason
for the need to convert from one file format to another is because the
target file format is best suited for targeted medium where the content
need to be displayed. The targeted medium may be an email, a printed
hard copy or a web browser. The text format is best suited for sending
emails, as the possibility of the email contents getting corrupted in
the transition is much lesser, when compared to the HTML formatted
emails. PDF document or a word document would be the best choice for
taking a printed hard copy and obviously HTML is best for showing
contents in web browsers.
Here, we are going to study on
converting HTML 2 PDF using PHP. This article is not going to explain
on the main logic of how to convert a HTML file to PDF file. That would
be a separate subject and it could not be covered in this short
article. But we would be seeing how to use some free open source PHP
scripts to accomplish this file conversion.
FPDF: The PDF Generator
The
first and the main base for this file conversion is FPDF library. FPDF
is a pure PHP class to generate PDF files on the fly. Let us start the
PDF generation with a simple Hello world display.
<?php
require('fpdf.php');
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>
To generate a pdf file, first we need to include library file fpdf.php.
Then we need to create an FPDF object using the default constructor
FPDF(). This constructor can be passed three values namely page
orientation (portrait or landscape), measure unit, and page size (A4,
A5, etc.,). By default pages are in A4 portrait and the measure unit is
millimeter. It could have been specified explicitly with:
$pdf=new FPDF('P','mm','A4');
It is possible to use landscape (L), other page formats (such as Letter and Legal) and measure units (pt, cm, in).
Then
we have added a page to our pdf document with AddPage(). The origin is
at the upper-left corner and the current position is by default placed
at 1 cm from the borders; the margins can be changed with the function
SetMargins().
To print a text, we need to first select a font with SetFont(). Let us select Arial bold 16:
$pdf->SetFont('Arial','B',16);
We
use Cell() function to output a text. A cell is a rectangular area,
possibly framed, which contains some text. It is output at the current
position. We specify its dimensions, its text (centered or aligned), if
borders should be drawn, and where the current position moves after it
(to the right, below or to the beginning of the next line). To add a
frame, we would do this:
$pdf->Cell(40,10,'Hello World !',1);
Finally,
the document is closed and sent to the browser with Output(). We could
have saved it in a file by passing the desired file name.
There are lot more functions in FPDF and we cannot cover all those in this article.
To learn FPDF, please browse http://www.fpdf.org.
HTML2FPDF: The Converter
HTML2FPDF
is a PHP Class library that uses the FPDF class library to convert HTML
files to PDF files. This library consist of three classes namely PDF,
HTML2FPDF and FPDF (modified FPDF class). The class PDF extends the
class HTML2FPDF that extends the class FPDF.
Now let us see,
how to convert a sample html page into a PDF file using HTML2FPDF
Library. The html page contains a table that lists a few nations with
their corresponding national flags. Below is the code for the
conversion.
<?
require('html2fpdf.php');
$pdf=new HTML2FPDF();
$pdf->AddPage();
$fp = fopen("sample.html","r");
$strContent = fread($fp, filesize("sample.html"));
fclose($fp);
$pdf->WriteHTML($strContent);
$pdf->Output("sample.pdf");
echo "PDF file is generated successfully!";
?>
First,
we need to include the html2fpdf.php file that contains the HTML2FPDF
class and an object is created using the constructor HTML2FPDF(). Then
a new page is added to the pdf document using the function AddPage().
The html contents are read from the sample.html file using file
functions. Then the html contents are written in to the pdf format
using WriteHTML() function.
The
HTML2FPDF class library will be working best with the XHTML 1.0. Also
the class does not support all the features available with HTML. To
know the supported HTML tags and other features, Please refer http://html2fpdf.sourceforge.net.
|