DekGenius.com
Previous Section  < Day Day Up >  Next Section

13.2 PDF

Another kind of non-HTML document that your PHP programs can produce is a PDF file, as shown in Example 13-2. This is handy for making an invoice that incorporates information from your database or providing printable versions of pages that meet exacting layout standards.

Example 13-2. Generating a PDF document
// These values are in points (1/72nd of an inch)
$fontsize = 72;     // 1 inch high letters
$page_height = 612; // 8.5 inch high page
$page_width = 792;  // 11 inch wide page

// Use a default message if none is supplied
if (strlen(trim($_GET['message']))) {
    $message = trim($_GET['message']);
} else {
    $message = 'Generate a PDF!';
}

// Create a new PDF document in memory
$pdf = pdf_new( );
pdf_open_file($pdf, '');

// Add a 11"x8.5" page to the document
pdf_begin_page($pdf, $page_width, $page_height);

// Select the Helvetica font at 72 points
$font = pdf_findfont($pdf, "Helvetica", "winansi", 0);
pdf_setfont($pdf, $font, $fontsize);

// Display the message centered on the page
pdf_show_boxed($pdf, $message, 0, ($page_height-$fontsize)/2,
               $page_width, $fontsize, 'center');

// End the page and the document
pdf_end_page($pdf);
pdf_close($pdf);

// Get the contents of the document and delete it from memory
$pdf_doc = pdf_get_buffer($pdf);
pdf_delete($pdf);

// Send appropriate headers and the document contents
header('Content-Type: application/pdf');
header('Content-Length: ' . strlen($pdf_doc));
print $pdf_doc;

Example 13-2 uses the functions in the PDF extension. This extension depends on the PDFLib library that is available at http://www.pdflibrary.com. The CLibPDF extension also generates PDF files, but depends on the ClibPDF library that is available at http://www.fastio.com. Both PDFLib and CLibPDF require that you buy a license to use them for commercial purposes.

See Chapter 10 of O'Reilly's Programming PHP for detailed information about creating PDF documents, and read http://www.php.net/manual/faq.using.php#faq.using.freepdf for some free PDF creation options.

    Previous Section  < Day Day Up >  Next Section