FieldtypePDF by Richard Jedlička

Fieldtype/Inputfield module allowing easy generation of thumbnails of the PDF files

PDF Fieldtype/Inputfield


Module for ProcessWire CMS allowing you to easily generate images from the PDF files embedded to the site.

  1. Requirements
  2. Installation
  3. How to use
  4. API documentation
  5. Tests
  6. Upgrading from 1.0.1 and lower
  7. Troubleshooting
  8. Changelog


  • Processwire 3+
  • ImageMagick PHP extension
  • Ghostscript

For ProcessWire 2.x support use version 1.x, maintained in pw-2 branch.


How to install or uninstall modules.

Via Composer

In your ProcessWire installation root run:

composer require uiii/processwire-fieldtypepdf

Login to your ProcessWire admin and go to Modules > Refresh and install the module.

If you want to read more about ProcessWire and Composer visit

How to use

In site's administration

Add a field and set its type to PDF. Use the field the same way as the file field (obviously, this accepts only *.pdf files). After the file is uploaded you will see a small thumbnail of it, just like for image field.

Image generation is highly configurable (image format, extension, background, ...). See the PDF to image converter section on field's Details tab.

Field settings

In templates

There are some backward-compatible API changes against the version 1.0.1 and lower, see Upgrading from 1.0.1 and lower.

The PDF field extends file field and adds new hookable ___toImage($page = 0, $options = array()) method to generate the image from PDF.

$image = $page->pdfFile->toImage();
$image->size(100, 100);

Method accepts two optional parameters. First is the $page, which specifies the PDF's page number the image is generated from, default is 0. The exception is thrown if the page is out of range.

The second is $options parameter, which is an array of options to override the options set in administration.

$options = array(
	'suffix' => array('suffix1', 'suffix2'), // suffixes used in filename
	'forceNew' => false, // if TRUE the image is regenerated if already exists
	'format' => 'JPEG', // image format
	'extension' => 'jpg', // image file extension
	'background' => '#FFFFFF', // background color used when the PDF has transparent background
	'resolution' => '300x300', // resolution used when reading the PDF
	'colorspace' => Imagick::COLORSPACE_RGB, // colorspace used when reading the PDF
	'imagickOptions' => array( // ImageMagick options

For each combinations of page and suffixes there will be one image. The generated images are saved in page's assets and will be created only once until forceNew options is TRUE. The image is the instance of Pageimage, so you can do with it whatever you can do with the image field. When you delete the PDF file the generated images are deleted too.

API documentation

Generate into doc directory:

apigen generate -d doc


DO NOT run the tests against the production site. They modify the fields, templates and pages as they need, so can potentially damage your site!

Prepare the PW testing installation and export the PW_PATH environment variable containing the path to the root of that installation. Copy the module sources in the $PW_PATH/site/modules/FieldtypePDF directory.

Install required packages:

composer install

Run the tests


Test multiple ProcessWire versions (automatically)

You can also automatically test against multiple ProcessWire versions. It uses Tense tool for it.

  1. Install reuquired packages:

    composer install
  2. Run the tests:

    vendor/bin/tense run

WARNING: The tool will ask you for database connection parameters. Configure the db connection parameters carefully because it creates and drops a database for each ProcessWire installation.

Upgrading from 1.0.1 and lower

In 1.1.0 some methods of class PagePDF are deprecated. See the list here. You doesn't have to make any changes but it is recommended to use the new API, for compatibility with later versions.

Instructions for replacing the deprecated methods:

  • $page->pdf->thumbnail($width, $height) replace with the code
$image = $page->pdf->toImage();
$image->size($width, $height);
  • isThumbnail($basename) replace with isImageOfThis($basename)

NOTE: There is certain incompatibility between these two methods. While isThumbnail returns TRUE for all the images generated from the PDF and also theirs derivatives (e.g. pdf.jpg, pdf.100x100.jpg), the isImageOfThis return TRUE only for the images generated directly from PDF (e.g. pdf.jpg). That doesn't change much, because you can use it in combination with Pageimage::isVariation.

  • removeThumbnails replace with removeImages


Thumbnail's colors do not match the colors in PDF

To fix that, you need to made some changes in ImageMagick delegate files. Detailed instructions can be found here:

GhostScript exceptions occured

If you got some GhostScript exceptions when generating image, update GhostScript and ImageMagick to the latest versions.

If you can't, you can use the fallback mode. Turn it on in the module's settings.

Be aware of that this will produce low quality images and most of the field type options won't be abvailable.

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Twitter updates

  • This week ProcessWire 3.0.214 is on the dev branch. Relative to 3.0.213 this version has 16 new commits which include the addition of 3 new pull requests, 6 issue fixes, a new WireNumberTools utility class, and various other improvements. More
    17 March 2023
  • ProcessWire 3.0.213 core updates: This week we’ll look at the new WireSitemapXML module, a new WireNumberTools core class, and a new ability for Fieldtype modules to specify useful ready-to-use configurations when creating new fields. More
    24 February 2023
  • ProcessWire 3.0.212 core updates— More
    17 February 2023

Latest news

  • ProcessWire Weekly #462
    In the 462nd issue of ProcessWire Weekly we'll cover the latest core updates, check out a new third party module called Template Access Log, and more. Read on! / 18 March 2023
  • ProcessWire 3.0.213 core updates
    This week we’ll look at the new WireSitemapXML module, a new WireNumberTools core class, and a new ability for Fieldtype modules to specify useful ready-to-use configurations when creating new fields.
    Blog / 24 February 2023
  • Subscribe to weekly ProcessWire news

“Indeed, if ProcessWire can be considered as a CMS in its own right, it also offers all the advantages of a CMF (Content Management Framework). Unlike other solutions, the programmer is not forced to follow the proposed model and can integrate his/her ways of doing things.” —Guy Verville, Spiria Digital Inc.