Skip to content

Releases: dompdf/dompdf

Dompdf 0.8.1

21 Nov 04:25
Compare
Choose a tag to compare

This release has been superseded by version 0.8.2

Change highlights since 0.8.0

  • Improves compatibility with PHP 7.1
  • Improves table rendering around page breaks and margins
  • Fixes paging of generated content
  • Improves handling of CSS selectors, media queries, and inherited properties
  • Fixes Unicode support in (encrypted) PDF documents

View all changes since the previous release in the commit history.

Updated dependencies

  • php-svg-lib 0.5.1
  • php-svg-lib 0.3

We would like to extend our gratitude to the community members who helped make this release possible.

Requirements

dompdf 0.8.1 requires the following:

  • PHP 5.4 or greater
  • MBString
  • GD (for image processing)
  • allow_url_fopen set to true (for retrieving stylesheets or images via http) or the curl PHP extension
  • php-font-lib v0.5.x
  • php-svg-lib v0.3.x (if rendering SVG)

For full requirements and recommendations see the requirements page on the wiki.

Download Instructions

The dompdf team recommends that you use Composer for easier dependency management.

If you're not yet using Composer you can download a packaged release of dompdf which includes all the files you need to use the library. Click the link labeled "dompdf_0-8-1.zip" for the packaged release. The two buttons labeled "Source code" are auto-generated by github and do not include all the dependencies.

Dompdf 0.8.0

19 Feb 00:55
Compare
Choose a tag to compare

This release has been superseded by version 0.8.1

Change highlights since 0.7.0

  • Improves compatibility with PHP 7.1
  • Adds support for width: auto CSS styling
  • Adds support for RGB-alpha and HEX-alpha CSS color values
  • Falls back to curl for remote resource fetching
  • Adds support for HTML5 elements
  • Improves CSS support for the following: float, nth-child/nth-of-type, :matches pseudo-class
  • Adds support for in-document linking using element ID
  • Adds preliminary support for media queries (width, height, and orientation)
  • Improves performance in various areas
  • Updates DejaVu Fonts to 2.37

Updated dependencies

  • php-font-lib 0.5
  • php-svg-lib 0.2

We would like to extend our gratitude to the community members who helped make this release possible.

Requirements

dompdf 0.7.0 requires the following:

  • PHP 5.3 or greater
  • MBString
  • GD (for image processing)
  • allow_url_fopen set to true (for retrieving stylesheets or images via http) or the curl PHP extension
  • php-font-lib v0.5.x
  • php-svg-lib v0.2 (if rendering SVG)

For full requirements and recommendations see the requirements page on the wiki.

Download Instructions

The dompdf team recommends that you use Composer for easier dependency management.

If you're not yet using Composer you can download a packaged release of dompdf which includes all the files you need to use the library. Click the link labeled "dompdf_0-8-0.zip" for the packaged release. The two buttons labeled "Source code" are auto-generated by github and do not include all the necessary files.

dompdf 0.7.0

12 May 02:52
Compare
Choose a tag to compare

This release has been superseded by version 0.8.0

Change highlights since 0.6.2

  • Incorporate relevant security updates from the 0.6.2 code base
  • Add namespace support
  • Restructure code for implementation of the PSR coding standard
  • Drop support for the dompdf_config.inc.php configuration file; see the migration section below for more details
  • Remove non-library utility code (load_font.php, dompdf.php, the www content)
  • Add initial support for SVG

The majority of work in this release went towards support for namespaces, PSR, and SVG support but a few code improvements were also made. Highlights include:

  • Update DejaVu fonts to v2.34
  • Optimize performance by removing support for versions of PHP prior to 5.3
  • Improve PDF structure produced by CPDF
  • Add rendered document page selection support to the GD adapter
  • Take Unicode and float support out of "beta"
  • Add support for unit testing

We would like to extend our gratitude to the community members who helped make this release possible.

Requirements

dompdf 0.7.0 requires the following:

  • PHP 5.3 or greater
  • MBString
  • GD (for image processing)
  • allow_url_fopen set to true (for retrieving stylesheets or images via http)
  • php-font-lib v0.4.x
  • php-svg-lib v0.1 (if rendering SVG)

For full requirements and recommendations see the requirements page on the wiki.

The dompdf team recommends that you use Composer for easier dependency management. If you're not yet using Composer you can download a packaged release of dompdf which includes all the files you need to use the library. The release package is titled dompdf_0-7-0.zip.

Notes on migrating from an earlier version of dompdf

  1. Because the dompdf_config.inc.php file has been removed from this release (and is no longer referenced) all dompdf options should be set at run time.
  2. The class naming conventions required a change to the dompdf_font_family_cache.php file. Though we have attempted to accommodate this change your first step when encountering bugs (if you don't know where to start) might be to reset your font directory (i.e. remove custom font files and the related font metrics files, and remove the non-dist, generated, font family cache file).
  3. Though a font loading script is no longer provided with dompdf you may continue to use the @font-face CSS rule to install fonts at run time. If you wish to pre-load fonts you may find a copy of the load_font.php script updated to run with this release of dompdf in the dompdf-utils project.
  4. The FontMetrics class is now instantiated instead of static. To simplify migration of embedded scripts from earlier versions of dompdf we provide access to the instantiated FontMetrics class via the $fontMetrics variable. Please update your embedded scripts. For example, FontMetrics::get_font('helvetica') would now be $fontMetrics->getFont('helvetica').

dompdf 0.7.0 beta 3

22 Jan 02:12
Compare
Choose a tag to compare
dompdf 0.7.0 beta 3 Pre-release
Pre-release

Change highlights since 0.6.2

  • Incorporate relevant security updates from the 0.6.2 code base
  • Add namespace support
  • Restructure code for implementation of the PSR coding standard
  • Drop support for the dompdf_config.inc.php configuration file; see the migration section below for more details
  • Remove non-library utility code (load_font.php, dompdf.php, the www content)
  • Add initial support for SVG

The majority of work in this release went towards support for namespaces, PSR, and SVG support but a few code improvements were also made. Highlights include:

  • Update DejaVu fonts to v2.34
  • Optimize performance by removing support for versions of PHP prior to 5.3
  • Improve PDF structure produced by CPDF
  • Add rendered document page selection support to the GD adapter
  • Take Unicode and float support out of "beta"
  • Add support for unit testing

Requirements

The dompdf 0.7.0 beta 3 requires the following:

  • PHP 5.3 or greater
  • MBString
  • GD (for image processing)
  • allow_url_fopen set to true (for retrieving stylesheets or images via http)
  • php-font-lib v0.4.x
  • php-svg-lib v0.1 (if rendering SVG)

For full requirements and recommendations see the requirements page on the wiki.

The dompdf team recommends that you use Composer for easier dependency management. If you're not yet using Composer you can download a packaged release of dompdf which includes all the files you need to use the library. The beta package is titled dompdf_0-7-0_beta3.zip.

Notes on migrating from an earlier version of dompdf

  1. Because the dompdf_config.inc.php file has been removed from this release (and is no longer referenced) all dompdf options will have to be set at run time. To simplify your in-code instantiation you can implement an intermediary script to instantiate dompdf and set the options, referencing this intermediate script in your project. We may provide such a script in the final release to help with migration.
  2. The class naming conventions required a change to the dompdf_font_family_cache.php file. Though we have attempted to accommodate this change your first step when encountering bugs (if you don't know where to start) might be to reset your font directory (i.e. remove custom font files, font metrics files, and the font family cache file).
  3. During the beta period the utilities for pre-loading fonts are not available. We hope to make these utilities available for the final release (in a separate project). You may continue to use the @font-face CSS rule to install fonts at run time.
  4. The FontMetrics class is now instantiated instead of static. To simplify migration we provide access to it via the $fontMetrics variable. Please update your embedded scripts. For example, FontMetrics::get_font('helvetica') would now be $fontMetrics->getFont('helvetica').

DOMPDF 0.6.2

11 Dec 21:58
Compare
Choose a tag to compare

This release is superseded by version 0.7.0

This is a security-focused release that addresses a number of vulnerabilities that can expose your system to exploitation. In tandem with this release we have also posted a document to the wiki with advice for securing dompdf. Please read the new document and take appropriate measures to protect your systems.

We urge all users to upgrade to this release if you are using dompdf 0.6.1 or earlier.

Change Summary for 0.6.2

This update addresses the following announced vulnerabilities:

Vulnerability Reference Type Severity
Remote Code Execution (complement of CVE-2014-2383) CVE-2014-5013 Remote Code Execution Low; Critical (depending on configuration)
Denial Of Service Vector CVE-2014-5012 Information Disclosure Medium
Information Disclosure CVE-2014-5011 Information Disclosure Medium
Arbitrary file read in dompdf using PHP stream filters CVE-2014-2383 Information Disclosure Medium

Change Summary for 0.6.1

  • Removed pre-processing of PHP code when DOMPDF_ENABLE_PHP is true (this does not affect embedded script).
  • Prior to this release dompdf was vulnerable to an information disclosure vulnerability. Thanks to Portcullis Computer Security Ltd. for reporting the issue. See the security advisory for additional details: Arbitrary file read in dompdf.

This update addresses the following announced vulnerabilities:

Vulnerability Reference Type Severity
Arbitrary file read in dompdf using PHP stream filters CVE-2014-2383 Information Disclosure Medium
PHP remote file inclusion vulnerability in dompdf.php CVE-2010-4879 Remote File Inclusion Low; Critical (depending on configuration)

Change Summary for 0.6.0

  • Fonts: Full Unicode support (with embedded fonts); DejaVu fonts pre-installed; php-font-lib now provides font handling and sub-setting
  • CSS: float support, border radius, transparency, @page, @font-face, generated content, fixed-positioning, transformations
  • HTML: HTML5 Parser cleans your HTML syntax
  • Images: Expanded image handling (including alpha transparency); added support for Data-URI image sources
  • Performance improvements
  • The project is now hosted on GitHub (the Google Code project is being temporarily maintained).

Download Instructions

Click the link labeled "dompdf-0.6.2.zip" to download the packaged release. The two buttons labeled "Source code" are auto-generated by github and do not include all the necessary files.

dompdf 0.7.0 beta 2

27 Sep 14:21
Compare
Choose a tag to compare
dompdf 0.7.0 beta 2 Pre-release
Pre-release

Change highlights since 0.6.2

  • Add namespace support
  • Restructure code for implementation of the PSR coding standard
  • Drop support for the dompdf_config.inc.php configuration file; see the migration section below for more details
  • Remove non-library utility code (load_font.php, dompdf.php, the www content)
  • Add initial support for SVG

The majority of work in this release went towards support for namespaces, PSR, and SVG support but a few code improvements were also made. Highlights include:

  • Update DejaVu fonts to v2.34
  • Optimize performance by removing support for versions of PHP prior to 5.3
  • Improve PDF structure produced by CPDF
  • Add rendered document page selection support to the GD adapter
  • Take Unicode and float support out of "beta"
  • Add support for unit testing

Requirements

The dompdf 0.7.0 beta 2 requires the following:

  • PHP 5.3 or greater
  • MBString
  • GD (for image processing)
  • allow_url_fopen set to true (for retrieving stylesheets or images via http)
  • php-font-lib v0.4.x
  • php-svg-lib v0.1 (if rendering SVG)

For full requirements and recommendations see the requirements page on the wiki.

The dompdf team recommends that you use Composer for easier dependency management. If you're not yet using Composer you can download a packaged release of dompdf which includes all the files you need to use the library. The beta package is titled dompdf_0-7-0_beta2.zip.

Notes on migrating from an earlier version of dompdf

  1. Because the dompdf_config.inc.php file has been removed from this release (and is no longer referenced) all dompdf options will have to be set at run time. To simplify your in-code instantiation you can implement an intermediary script to instantiate dompdf and set the options, referencing this intermediate script in your project. We may provide such a script in the final release to help with migration.
  2. The class naming conventions required a change to the dompdf_font_family_cache.php file. Though we have attempted to accommodate this change your first step when encountering bugs (if you don't know where to start) might be to reset your font directory (i.e. remove custom font files, font metrics files, and the font family cache file).
  3. During the beta period the utilities for pre-loading fonts are not available. We hope to make these utilities available for the final release (in a separate project). You may continue to use the @font-face CSS rule to install fonts at run time.
  4. The FontMetrics class is now instantiated instead of static. To simplify migration we provide access to it via the $fontMetrics variable. Please update your inline scripts. For example, FontMetrics::get_font('helvetica') would now be $fontMetrics->getFont('helvetica').

dompdf 0.7.0 beta

04 May 21:20
Compare
Choose a tag to compare
dompdf 0.7.0 beta Pre-release
Pre-release

Change highlights since 0.6.2

  • Added namespace support
  • Restructured code for the implementation of the PSR-2 coding standard
  • Dropped support for the configuration file (dompdf_config.inc.php); see the migration section below for more details
  • Removed non-library code (load_font.php, dompdf.php, the www content)

The majority of work in this release went towards support for namespaces and PSR-2, but a few code improvements were also made.

  • Updated DejaVu fonts to v2.34
  • Optimized performance by removing pre-5.3 code
  • Improved PDF structure produced by CPDF

Requirements

The dompdf 0.7.0 beta requires the following:

  • PHP 5.3 or greater
  • GD (for image processing)
  • allow_url_fopen set to true (for retrieving images via http)
  • php-font-lib v0.3.x

For full requirements and recommendations see the requirements page on the wiki.

The dompdf team recommends that you use Composer for easier dependency management. If you're not yet using Composer you can download an archived release of dompdf which includes all the files you need to use the library. The beta download is titled dompdf_0.7.0.beta.zip.

Notes on migrating from an earlier version of dompdf

  1. Because the dompdf_config.inc.php file has been removed from this release (and is no longer referenced) all dompdf options will have to be set at run time. To simplify your in-code instantiation you can implement an intermediary script to instantiate dompdf and set the options, referencing this intermediate script in your project. We may provide such a script in the final release to help with migration.
  2. The class naming conventions required a change to the dompdf_font_family_cache.php file. Though we have attempted to accommodate this change your first step when encountering bugs (if you don't know where to start) might be to reset your font directory (i.e. remove custom font files, font metrics files, and the font family cache file).
  3. During the beta period the utilities for pre-loading fonts are not available. We hope to make these utilities available for the final release (in a separate project). You may continue to use the @font-face CSS rule to install fonts at run time.
  4. The FontMetrics class is now instantiated instead of static. To simplify migration we provide access to it via the $fontMetrics variable. Please update your inline scripts. For example, FontMetrics::get_font('helvetica') would now be $fontMetrics->get_font('helvetica').

DOMPDF 0.6.1

14 Mar 18:17
Compare
Choose a tag to compare

This release is superseded by version 0.6.2

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.

Change highlights since 0.6.0

  • Removed pre-processing of PHP code when DOMPDF_ENABLE_PHP is true (this does not affect inline script).
  • Prior to this release dompdf was vulnerable to an information disclosure vulnerability. Thanks to Portcullis Computer Security Ltd. for reporting the issue. See the security advisory for additional details: Arbitrary file read in dompdf.

Change highlights since 0.5.2

  • Fonts: Full Unicode support (with embedded fonts); DejaVu fonts pre-installed; php-font-lib now provides font handling and sub-setting
  • CSS: float support, border radius, transparency, @page, @font-face, generated content, fixed-positioning, transformations
  • HTML: HTML5 Parser cleans your HTML syntax
  • Images: Expanded image handling (including alpha transparency); added support for Data-URI image sources
  • Performance improvements
  • The project is now hosted on GitHub (the Google Code project is being temporarily maintained).

Download Instructions

The two buttons labeled "Source code" are auto-generated by github and do not include all the necessary files.

DOMPDF 0.6.0

14 Mar 18:15
Compare
Choose a tag to compare

This release is superseded by version 0.6.2

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.

Change highlights since 0.5.2

  • Fonts: Full Unicode support (with embedded fonts); DejaVu fonts pre-installed; php-font-lib now provides font handling and sub-setting
  • CSS: float support, border radius, transparency, @page, @font-face, generated content, fixed-positioning, transformations
  • HTML: HTML5 Parser cleans your HTML syntax
  • Images: Expanded image handling (including alpha transparency); added support for Data-URI image sources
  • Performance Improvements

Download Instructions

The two buttons labeled "Source code" are auto-generated by github and do not include all the necessary files.

DOMPDF 0.5.2

17 Aug 02:03
Compare
Choose a tag to compare

This release is superseded by version 0.6.2

DOMPDF 0.5.1 Release Notes

Table of Contents:

  1. Overview
  2. Features
  3. Requirements
  4. Limitations (Known Issues)
  5. Usage
  6. Inline PHP Support

For installation instructions see INSTALL.


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 or by a bundled version the R&OS CPDF class written by Wayne Munro. (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.

This package should contain:

File Notes
dompdf.php PDF Generating script
dompdf_config.inc.php Main configuration file
load_font.php Font loading utility script
HACKING Notes on messing with the code
INSTALL Installation instructions
LICENSE.LGPL GNU Lesser General Public License
NEWS Release news
README This content
TODO Things I'm working on
include/ PHP class & include files
lib/ R&OS PDF class, fonts, default CSS file
www/ Demonstration webpage
www/test/ Some test HTML pages

For the impatient: Once you have installed dompdf, point your browser at the www/ directory for HTML documentation and a quick demonstration.

Features

  • handles most CSS2.1 properties, including @import, @media & @page rules
  • supports most presentational HTML 4.0 attributes
  • supports external stylesheets, either local or through http/ftp (via fopen-wrappers)
  • supports complex tables, including row & column spans, separate & collapsed border models, individual cell styling, (no nested tables yet however)
  • image support (gif, png & jpeg)
  • no dependencies on external PDF libraries, thanks to the R&OS PDF class
  • inline PHP support. See below for details.

Requirements

  • PHP 5.0.0+
  • Some fonts. PDFs internally support Helvetica, Times-Roman, Courier, Symbol & Zapf-Dingbats, but if you wish to use other fonts you will need to install some fonts. dompdf supports the same fonts as the underlying R&OS PDF class: Type 1 (.pfb with the corresponding .afm) and TrueType (.ttf). At the minimum, you should probably have the Microsoft core fonts (now available at: http://corefonts.sourceforge.net/). See the INSTALL file for font installation instructions.

Limitations (Known Issues)

  • tables can not be nested
  • not particularly tolerant to poorly-formed HTML input (using Tidy first may help).
  • large files can take a while to render
  • ordered lists are currently not supported

Usage

The included dompdf.php script can be used both from the command line or via a web browser. Alternatively, the dompdf class can be used directly.

Invoking dompdf via the web:

The dompdf.php script is not intended to be an interactive page. It receives input parameters via $_GET and can stream a PDF directly to the browser. This makes it possible to embed links to the script in a page that look like static PDF links, but are actually dynamically generated. This method is also useful as a redirection target.

dompdf.php accepts the following $_GET variables:

Variable Required? Notes
input_file required a rawurlencoded() path to the HTML file to process. Remote files (http/ftp) are supported if fopen wrappers are enabled.
paper optional the paper size. Defaults to 'letter' (unless the default has been changed in dompdf_config.inc.php). See include/cpdf_adapter.cls.php, or invoke dompdf.php on the command line with the -l switch for accepted paper sizes. orientation
base_path optional the base path to use when resolving relative links (images or CSS files). Defaults to the directory containing the file being accessed. (This option is useful for pointing dompdf at your CSS files even though the HTML file may be elsewhere.)
output_file optional the rawurlencoded() name of the output file. Defaults to 'dompdf_out.pdf'.
save_file optional If present (i.e. isset($_GET["save_file"]) == true), output_file is saved locally, Otherwise the file is streamed directly to the client.

One technique for generating dynamic PDFs is to generate dynamic HTML as you normally would, except instead of displaying the output to the browser, you use output buffering and write the output to a temporary file. Once this file is saved, you redirect to the dompdf.php script. If you use a templating engine like Smarty, you can simply do:

<?php
$tmpfile = tempnam("/tmp", "dompdf_");
file_put_contents($tmp_file, $smarty-&gt;fetch());

$url = "dompdf.php?input_file=" . rawurlencode($tmpfile) . 
       "&paper=letter&output_file=" . rawurlencode("My Fancy PDF.pdf");

header("Location: http://" . $_SERVER["HTTP_HOST"] . "/$url");
?>

If you use any stylesheets, you may need to provide the base_path option to tell dompdf where to look for them, as they are not likely relative to /tmp ;).

###Invoking dompdf via the command line:

You can execute dompdf.php using the following command:

$ php -f dompdf.php -- [options]

(If you find yourself using only the cli interface, you can add #!/usr/bin/php as the first line of dompdf.php to invoke dompdf.php directly.)

dompdf.php is invoked as follows:

$ ./dompdf.php [options] html_file
Option Notes
html_file can be a filename, a url if fopen_wrappers are enabled, or the '-' character to read from standard input.
-h Show a brief help message
-l list available paper sizes
-p <size> paper size; something like 'letter', 'A4', 'legal', etc. The default is 'letter'
-o <orientation> either 'portrait' or 'landscape'. Default is 'portrait'.
-b <path> the base path to use when resolving relative links (images or CSS files). Default is the directory of html_file.
-f <file> the output filename. Default is based on the input filename <file>.pdf.
-v verbose: display html parsing warnings and file not found errors.
-d very verbose: display oodles of debugging output; every frame in the tree is printed to stdout.

Examples:

$ php -f dompdf.php -- my_resume.html
$ php -f dompdf.php -- -b /var/www/ ./web_stuff/index.html
$ echo '<html><body>Hello world!</body>' | php -f dompdf.php -- -

Using the dompdf class directly:

See the API documentation for the interface definition.

Inline PHP Support

dompdf supports two varieties of inline PHP code. All PHP evaluation is controlled by the DOMPDF_ENABLE_PHP configuration option. If it is set to false, then no PHP code is executed. Otherwise, PHP is evaluated in two passes:

The first pass is useful for inserting dynamic data into your PDF. You can do this by embedding <?php ?> tags in your HTML file, as you would in a normal .php file. This code is evaluated prior to parsing the HTML, so you can echo any text or markup and it will appear in the rendered PDF.

The second pass is useful for performing drawing operations on the underlying PDF class directly. You can do this by embedding PHP code within <script type="text/php"> </script> tags. This code is evaluated during the rendering phase and you have access to a few internal objects and operations. In particular, the $pdf variable is the current instance of CPDF_Adapter. Using this object, you can write and draw directly on the current page. Using the CPDF_Adapter::open_object(), CPDF_Adapter::close_object() and CPDF_Adapter::add_object() methods, you can create text and drawing objects that appear on every page of your PDF (useful for headers &
footers).

The following variables are defined for you during the second pass of PHP execution:

Variable Description
$pdf the current instance of CPDF_Adapter
$PAGE_NUM the current page number
$PAGE_COUNT the total number of pages in the document

For more complete documentation of the CPDF_Adapter API, see either include/cpdf_adapter.cls.php and include/canvas.cls.php directly.

That's it! Have fun!
Benj Carson

Copyright (c) 2004-2005 Benj Carson
R&OS PDF class (class.pdf.php) Copyright (c) 2001-04 Wayne Munro