Create PDF thumbnails with imagecache and ImageMagick while GD is still the default toolkit
Last updated on
30 April 2025
You are browsing documentation for an older version of Drupal, which is not supported any longer, and the information may not be correct. See current documentation for Contributed modules
This tutorial can be considered as a continuation of http://drupal.org/node/460132.
Its purpose is to create single-page and double-page thumbnails of PDF files:
- without selecting ImageMagick as the default toolkit, as GD is often the preferred toolkit
- using imagecache so that the creation process is automated
Example
An example of result can be seen here.
The libraries you need on your server:
- ImageMagick
- Ghostscript
The Drupal modules you need to install and enable:
- Content Construction Kit Module
- FileField Module
- ImageAPI: enable both ImageAPI GD2 and ImageAPI ImageMagick
- ImageCache 6.x-2.0-beta10
- ImageCache Actions: enable Imagecache Custom Actions too
- FileField Paths, Pathauto and Transliteration
Instructions
- Select GD2 as your default toolkit
- Patch ImageCache 6.x-2.0-beta10 with this patch
- Create a new imagecache preset with a custom imagecache action to generate a single-page thumbnail. Code is: (do not include the <?php ?> tag)
<?php $w = 246; // change to your preferred thumbnail width if (!_imageapi_imagemagick_convert($image->source.'[0]', $image->source.'.png', array(0 => '-thumbnail '.$w))) return FALSE; $img = imagecreatefrompng($image->source.'.png'); file_delete($image->source.'.png'); $image->resource = $img; $image->toolkit = 'imageapi_gd'; $image->info = array('extension' => 'jpeg'); return TRUE; ?> - Create a new imagecache preset with a custom imagecache action to generate a double-page thumbnail. Code is: (do not include the <?php ?> tag)
<?php $w = 256; // change to your preferred thumbnail width (this is the width of *one* page) if (!_imageapi_imagemagick_convert($image->source.'[0]', $image->source.'0.png', array(0 => '-thumbnail '.$w))) return FALSE; if (!_imageapi_imagemagick_convert($image->source.'[1]', $image->source.'1.png', array(0 => '-thumbnail '.$w))) return FALSE; $data = getimagesize($image->source.'0.png'); $h = $data[1]; $img1 = imagecreatefrompng($image->source.'0.png'); $img2 = imagecreatefrompng($image->source.'1.png'); $img3 = imagecreatetruecolor($w * 2, $h); imagecopy($img3, $img1, 0, 0, 0, 0, $w, $h); imagecopy($img3, $img2, $w, 0, 0, 0, $w, $h); imagedestroy($img1); imagedestroy($img2); file_delete($image->source.'0.png'); file_delete($image->source.'1.png'); $color = imagecolorallocate($img3, 0xBE, 0xC0, 0xC2); //grey line imageline($img3, $w, 0, $w, $h, $color); imagecolordeallocate($img3, $color); $image->resource = $img3; $image->toolkit = 'imageapi_gd'; $image->info = array('extension' => 'jpeg'); return TRUE; ?> - Add a FileField to a content type so that you can upload PDF files
- Ensure that FileField Path settings are set so that file's path will be properly sanitized
- Set display of this field to the desired thumbnail preset
Et voilà !
See also
PDF to ImageField is a module that solves this sort of task without custom code
Help improve this page
Page status: Not set
You can:
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion