Create PDF with PHP
How to generate PDF file from MySQL table with PHP?
Answer:
The PDF extension of PHP (PDFlib) provides the required functionality for generating PDF files.
The following sample code demonstrates how a PDF file can be created and filled with information retrieved from database:
<?php require_once('Connections/cnnTest.php'); ?>
<?php
// select data from database for the PDF
mysql_select_db($database_cnnTest, $cnnTest);
$query_rsReportData = "SELECT * FROM categories";
$rsReportData = mysql_query($query_rsReportData, $cnnTest) or die(mysql_error());
$row_rsReportData = mysql_fetch_assoc($rsReportData);
$totalRows_rsReportData = mysql_num_rows($rsReportData);
?>
<?php
// create handle for new PDF document
$pdf = pdf_new();
// open a file
pdf_open_file($pdf, "");
// Set Info
pdf_set_info($pdf, "Author", "Georgi Kralev");
pdf_set_info($pdf, "Title", "Report");
pdf_set_info($pdf, "Creator", "Georgi Kralev");
pdf_set_info($pdf, "Subject", "Report");
// start a new page (A4)
pdf_begin_page($pdf, 595, 842);
// path of your TTF font directory
$fontdir = "C:\WINDOWS\Fonts";
// Open .TTFs (true type fonts)
pdf_set_parameter($pdf, "FontOutline", "ArialItalic=$fontdir\ariali.ttf");
pdf_set_parameter($pdf, "FontOutline", "ArialBold=$fontdir\ARIALBD.TTF");
pdf_set_parameter($pdf, "FontOutline", "Arial=$fontdir\ARIAL.TTF");
// ------ Start output of the PDF Content ------//
// set the font - Arial Bold 15
$font = pdf_findfont($pdf, "ArialBold", "host",0); pdf_setfont($pdf, $font, 15);
// output document title
pdf_show_xy($pdf, "Categories Report", 50, 788);
// draw a line
pdf_moveto($pdf, 20, 780);
pdf_lineto($pdf, 575, 780);
pdf_stroke($pdf);
// set the font - Arial Italic 12
$font = pdf_findfont($pdf, "ArialItalic", "host",0); pdf_setfont($pdf, $font, 12);
$y = 750;
// output data header
pdf_show_xy($pdf, "Category:", 50, $y);
$y -= 5;
// set the font - Arial 10
$font = pdf_findfont($pdf, "Arial", "host",0); pdf_setfont($pdf, $font, 10);
// output the data from Database
do
{ $y -= 15;
pdf_show_xy($pdf, $row_rsReportData['name'], 50, $y);
}
while ($row_rsReportData = mysql_fetch_assoc($rsReportData));
// ------ End output of the PDF Content ------//
// end page
pdf_end_page($pdf);
// close and save file
pdf_close($pdf);
$buf = pdf_get_buffer($pdf);
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=report.pdf");
echo $buf;
pdf_delete($pdf);
?>
<?php
mysql_free_result($rsReportData);
?>
My connection file is called cnnTest.php. The table from which I get the data is called categories.
I use the PDF extension functions to create the pdf, fill document info, set the fonts and write the information from the column name of table categories.
Note:
1. In order the code to work, the following line in your php.ini has to be uncommented:
extension=php_pdf.dll
2. For more information about PDFlib library check: PDF Functions
Comments
Fixed
Something wrong with code, to be expected for free stuff.
Changed this line:
header("Content-Disposition: inline; filename="report.pdf"");
From this:
header("Content-Disposition: inline; filename="report.pdf"");
Now it works!
RE: Fixed
Hi Jayson
You are right. The is a syntax error in the following line:
header("Content-Disposition: inline; filename="report.pdf"");
It should be:
header("Content-Disposition: inline; filename=report.pdf");
I have correct the problem. Thank you for your contribution.
Best regards,
No Probs,
Bonus!
No Probs,
My mistake of copying and pasting the same freakin' code.
Cool
Cheers
RE: RE: Fixed
By the way, this example opens up so many new possibilities for my coding.
Now I can add Link to PDF along with the Printer friendly & Email this article.
Thank you!
You must me logged in to write a comment.