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.
Note: This extension has been moved to PECL as of PHP 4.3.9.
PDFlib is available for download at http://www.pdflib.com/products/pdflib/index.html, but requires that you purchase a license for commercial use. The JPEG and TIFF libraries are required to compile this extension.
Any version of PHP 4 after March 9, 2000 does not support versions of PDFlib older than 3.0.
PDFlib 3.0 or greater is supported by PHP 3.0.19 and later.
This PECL extension is not bundled with PHP. Additional information such as new releases, downloads, source files, maintainer information, and a CHANGELOG, can be located here: http://pecl.php.net/package/pdflib.
To get these functions to work in PHP < 4.3.9, 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.
As of PHP 4.3.9, you must install this extension through PEAR, using the following command: pear install pdflib.
This extension has no configuration directives defined in php.ini.
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
|pdf_put_image()||Not needed anymore.|
|pdf_execute_image()||Not needed anymore.|
|pdf_get_annotation()||pdf_get_bookmark() using the same parameters.|
|pdf_get_font()||pdf_get_value() passing "font" as the second parameter.|
|pdf_get_fontsize()||pdf_get_value() passing "fontsize" as the second parameter.|
|pdf_get_fontname()||pdf_get_parameter() passing "fontname" as the second parameter.|
|pdf_set_info_creator()||pdf_set_info() passing "Creator" as the second parameter.|
|pdf_set_info_title()||pdf_set_info() passing "Title" as the second parameter.|
|pdf_set_info_subject()||pdf_set_info() passing "Subject" as the second parameter.|
|pdf_set_info_author()||pdf_set_info() passing "Author" as the second parameter.|
|pdf_set_info_keywords()||pdf_set_info() passing "Keywords" as the second parameter.|
|pdf_set_leading()||pdf_set_value() passing "leading" as the second parameter.|
|pdf_set_text_rendering()||pdf_set_value() passing "textrendering" as the second parameter.|
|pdf_set_text_rise()||pdf_set_value() passing "textrise" as the second parameter.|
|pdf_set_horiz_scaling()||pdf_set_value() passing "horizscaling" as the second parameter.|
|pdf_set_text_matrix()||Not available anymore|
|pdf_set_char_spacing()||pdf_set_value() passing "charspacing" as the second parameter.|
|pdf_set_word_spacing()||pdf_set_value() passing "wordspacing" as the second parameter.|
|pdf_set_transition()||pdf_set_parameter() passing "transition" as the second parameter.|
|pdf_open()||pdf_new() plus an subsequent call of pdf_open_file()|
|pdf_set_font()||pdf_findfont() plus an subsequent call of pdf_setfont()|
|pdf_set_duration()||pdf_set_value() passing "duration" as the second parameter.|
|pdf_open_gif()||pdf_open_image_file() passing "gif" as the second parameter.|
|pdf_open_jpeg()||pdf_open_image_file() passing "jpeg" as the second parameter.|
|pdf_open_tiff()||pdf_open_image_file() passing "tiff" as the second parameter.|
|pdf_open_png()||pdf_open_image_file() passing "png" as the second parameter.|
|pdf_get_image_width()||pdf_get_value() passing "imagewidth" as the second parameter and the image as the third parameter.|
|pdf_get_image_height()||pdf_get_value() passing "imageheight" as the second parameter and the image as the third parameter.|
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
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