About PDF Fieldtype
Fieldtype/Inputfield module allowing easy generation of thumbnails of the PDF files
|Category 1||Field Types|
Fieldtype modules that represent a data type used by fields.
|Category 2||Input Fields|
Inputfield modules that provide a UI input widget in the ProcessWire admin.
Should be safe for use in production environments. *
|Compatibility||2.5, 2.6, 2.7, 3.0|
|Date Added||May 20, 2014|
|Last Updated||December 9, 2016|
This module's files should be placed in /site/modules/FieldtypePDF/
How to install or uninstall modules
Module for ProcessWire CMS allowing you to easily generate images from the PDF files embedded to the site.
- How to use
- API documentation
- Upgrading from 1.0.1 and lower
- Processwire 2.5+
- ImageMagick PHP extension
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 https://processwire.com/blog/posts/composer-google-calendars-and-processwire/
Add a field and set its type to
Image generation is highly configurable (image format, extension, background, ...). See the PDF to image converter section on field's Details tab.
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 'pdf:use-cropbox=true' ) )
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.
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
Install required packages:
Run the tests
You can also automatically test against multiple ProcessWire versions.It uses PW-Test tool for it.
Install reuquired packages:
Create a config file:
cp pw-test.json.example pw-test.json
pw-test.jsonfile and fill the values
WARNING: The tool creates and drops a databasefor each ProcessWire installation, so configure the
dbconnection parameters carefully.
Run the tests:
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);
NOTE: There is certain incompatibility between these two methods. While
isThumbnailreturns TRUE for all the images generated from the PDF and also theirs derivatives (e.g. pdf.jpg, pdf.100x100.jpg), the
isImageOfThisreturn 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
To fix that, you need to made some changes in ImageMagick delegate files. Detailed instructions can be found here: http://www.lassosoft.com/CMYK-Colour-Matching-with-ImageMagick
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.
- Added ProcessWire 3.x support
- Module is installable via Composer
- Use PW-Test for testing against multiple versions of ProcessWire
- Fix module's installation by classname
- API change: New method
thumbnailand related methods are marked as deprecated
- PDF to image converter is now configurable in admin [issue #7]
- You can specify which page of the PDF's the image is generated from [issue #3]
- Fix bugs [issue #4, #6]
- Add ApiGen config for API documentation generation
- Add PHPUnit tests
- Add license (MIT)
No comments yet. Be the first to post!
Your e-mail is kept confidential and not included with your comment. Website is optional.
- Admin Helpers
- Core Modules
- Development Tools
- Field Types
- File Validator
- Input Fields
- Language Modules
- Language Packs
- Markup Generation
- Premium Modules
- Process Modules
- Proof of Concept
- Site Profiles
- Social, Feeds, Services
- Text Formatters
- Other Modules
- Users and Access
*Use modules at your own risk. There are no guarantees or warranties. It is recommended that you backup your site and database before installing new modules.