On this page:
Overview
dompdf is an HTML to PDF converter. At its heart, dompdf is (mostly) CSS2.1 compliant HTML layout and rendering engine written in PHP. It is a style-driven renderer: it will download and read external stylesheets, inline style tags, and the style attributes of individual HTML elements. It also supports most presentational HTML attributes.
PDF rendering is currently provided either by PDFLib (www.pdflib.com) or by a bundled version the R&OS CPDF class written by Wayne Munro (www.ros.co.nz/pdf). (Some performance related changes have been made to the R&OS class, however). In order to use PDFLib with dompdf, the PDFLib PECL extension is required. Using PDFLib improves performance and reduces the memory requirements of dompdf somewhat, while the R&OS CPDF class, though slightly slower, eliminates any dependencies on external PDF libraries.
dompdf was entered in the Zend PHP 5 Contest and placed 20th overall.
Please note that dompdf works only with PHP 5. There are no plans for a PHP 4 port. If your web host does not offer PHP 4, I suggest either pestering them, or setting up your own PHP 5 box and using it to run dompdf. Your scripts on your web host can redirect PDF requests to your PHP 5 box.
Features
- handles most CSS2.1 properties, including @import, @media & @page rules
- supports most presentational HTML 4.0 attributes
- supports external stylesheets, either on the local machine or through http/ftp (via fopen-wrappers)
- supports complex tables, including row & column spans, separate & collapsed border models, individual cell styling, multi-page tables (no nested tables yet however)
- image support (png, gif & jpeg)
- no dependencies on external PDF libraries, thanks to the R&OS PDF class
- inline PHP support. See the section on inline PHP for details.
Limitations (Known Issues)
- tables can not be nested
- ordered lists are currently unsupported.
- absolute & relative positioning and floats do not work, yet.
- not particularly tolerant to poorly-formed HTML or CSS input (using Tidy first may help)
- large files can take a while to render
Hacking
If you are interested in extending or modifying dompdf, please feel free to contact me (Benj Carson) by email at dompdf at digitaljunkies.ca. Let me know what you'd like to try and I can perhaps point you to the relevant sections of the source. If you add some features, or fix some bugs, please send me a patch and I'll include your changes in the main distribution.