How to convert a PDF file to JPEGs using PHP
Hey, Today I would like to show you how we can convert PDF to JPEG using imagick extension. Imagick is a native php extension to create and modify images using the ImageMagick API, which is mostly built-in in PHP installation so no need to include any thing. ImageMagick software suite allow us to create, read, edit, and compose bitmap images easily.
PHP – Convert all PDF pages to JPEG
Using following simple example you can convert all pages of PDF to JPEG images.
<?php
// create Imagick object
$imagick = new Imagick();
// Reads image from PDF
$imagick->readImage('myfile.pdf');
// Writes an image or image sequence Example- converted-0.jpg, converted-1.jpg
$imagick->writeImages('converted.jpg', false);
?>
|
As you are seeing, you have to pass a PDF file and it will produce JPEG files for each page of your given PDF file as output. writeImages() function second parameter is false, so it will not join the images, means it will produce image sequence(create images for each page) Example – converted-0.jpg, converted-1.jpg.
PHP – Convert specific PDF page to JPEG
If you want to convert specific page for example first page of your PDF file only then define PDF file name like this myfile.pdf[0] and run the script it will show convert only first page of your PDF file. Following is the example –
<?php
// create Imagick object
$imagick = new Imagick();
// Reads image from PDF
$imagick->readImage('test.pdf[0]');
// Writes an image
$imagick->writeImages('converted_page_one.jpg');
?>
|
PHP – Convert specific PDF page to JPEG with quality
If you need better quality, try adding $imagick->setResolution(150, 150); before reading the file. setResolution() must be called before loading or creating an image.
<?php
// create Imagick object
$imagick = new Imagick();
// Sets the image resolution
$imagick->setResolution(150, 150);
// Reads image from PDF
$imagick->readImage('test.pdf[0]');
// Writes an image
$imagick->writeImages('converted_page_one.jpg');
?>
|
If you experience transparency problems when converting PDF to JPEG (black background), try flattening your file:
<?php
// create Imagick object
$imagick = new Imagick();
// Sets the image resolution
$imagick->setResolution(150, 150);
// Reads image from PDF
$imagick->readImage('myFile.pdf[0]');
// Merges a sequence of images
$imagick = $imagick->flattenImages();
// Writes an image
$imagick->writeImages('converted_page_one.jpg');
?>
|
shared hosting – Convert a PDF to JPEG using PHP
Most of the shared hosting providers do not compile imagick extension with PHP, but imagick binaries will be available, so here is the code to convert PDF to JPEG with imagick binaries.
// source PDF file
$source = "myFile.pdf";
// output file
$target = "converted.jpg";
// create a command string
exec('/usr/local/bin/convert "'.$source .'" -colorspace RGB -resize 800 "'.$target.'"', $output, $response);
echo $response ? "PDF converted to JPEG!!" : 'PDF to JPEG Conversion failed';
?>
|
You have to change binaries location (/usr/local/bin/convert) to your server location which you can get from your hosting admin.
Lots of things can be done with Imagick extension, explore more about it at – http://php.net/manual/en/book.imagick.php
I hope you like this Post, Please feel free to comment below, your suggestion and problems if you face - we are here to solve your problems.