| 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. To view the html
file, click here and to view the generated pdf, click
here. The above sample code with the sample html file and images and the
html2fpdf class libraries can be downloaded here.
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.
 |