The PDF functions in PHP can create PDF files using the PDFlib library created by Thomas Merz.
The documentation in this section is only meant to be an overview of the available functions in the PDFlib library and should not be considered an exhaustive reference. Please consult the
documentation included in the source distribution of PDFlib for the full and detailed explanation of each function here. It provides a very good overview of what PDFlib is capable of doing and
contains the most up-to-date documentation of all functions.
All of the functions in PDFlib and the PHP module have identical function names and parameters. You will need to understand some of the basic concepts of PDF and PostScript to efficiently use this
extension. All lengths and coordinates are measured in PostScript points. There are generally 72 PostScript points to an inch, but this depends on the output resolution. Please see the PDFlib
documentation included with the source distribution of PDFlib for a more thorough explanation of the coordinate system used.
Please note that most of the PDF functions require a pdfdoc as its first parameter. Please see the examples below for more
information.
Note: If you're interested in alternative free PDF generators that do not utilize external PDF libraries, see
this related FAQ.
To get these functions to work, you have to compile PHP with --with-pdflib[=DIR]. DIR is the PDFlib base install directory, defaults to /usr/local. In addition you can specify the jpeg, tiff, and pnglibrary for PDFlib to use, which is optional for PDFlib 4.x. To do so add to your configure line the options --with-jpeg-dir[=DIR]--with-png-dir[=DIR]--with-tiff-dir[=DIR].
When using version 3.x of PDFlib, you should configure PDFlib with the option --enable-shared-pdflib.
Starting with PHP 4.0.5, the PHP extension for PDFlib is officially supported by PDFlib GmbH. This means that all the functions described in the PDFlib manual (V3.00 or greater) are supported by
PHP 4 with exactly the same meaning and the same parameters. Only the return values may differ from the PDFlib manual, because the PHP convention of returning FALSE
was adopted. For compatibility reasons, this binding for PDFlib still supports the old functions, but they should be replaced by their new versions. PDFlib GmbH will not support any problems arising
from the use of these deprecated functions.
Table 1. Deprecated functions and their replacements
Most of the functions are fairly easy to use. The most difficult part is probably creating your first PDF document. The following example should help to get you started. It creates test.pdf with one page. The page contains the text "Times Roman outlined" in an outlined, 30pt font. The text is also underlined.
Example 1. Creating a PDF document with PDFlib
<?php
$pdf=pdf_new(); pdf_open_file($pdf,"test.pdf"); pdf_set_info($pdf,"Author","Uwe Steinmann"); pdf_set_info($pdf,"Title","Test for PHP wrapper
of PDFlib 2.0"); pdf_set_info($pdf,"Creator","See Author"); pdf_set_info($pdf,"Subject","Testing"); pdf_begin_page($pdf,595,842); pdf_add_outline($pdf,"Page 1"); $font=pdf_findfont($pdf,"Times New Roman","winansi",1); pdf_setfont($pdf,$font,10); pdf_set_value($pdf,"textrendering",1); pdf_show_xy($pdf,"Times Roman
outlined",50,750); pdf_moveto($pdf,50,740); pdf_lineto($pdf,330,740); pdf_stroke($pdf); pdf_end_page($pdf); pdf_close($pdf); pdf_delete($pdf);
echo"<A HREF=getpdf.php>finished</A>"; ?>
The script getpdf.php just returns the pdf document.
The PDFlib distribution contains a more complex example which creates a page with an analog clock. Here we use the in-memory creation feature of PDFlib to alleviate the need to use temporary
files. The example was converted to PHP from the PDFlib example. (The same example is available in the CLibPDF documentation.)
Example 3. pdfclock example from PDFlib distribution
<?php
$radius=200; $margin=20; $pagecount=10;
$pdf=pdf_new();
if (!pdf_open_file($pdf,"")) {
echoerror;
exit;
};
Note: An alternative PHP module for PDF document creation based on FastIO's ClibPDF is available. Please see the ClibPDF section for details. Note that ClibPDF has a slightly different API than PDFlib.