This package provides an easy to work with the class to convert PDF's to images.
You should have Imagick and Ghostscript installed.
The package can be installed via composer:
composer require spatie/pdf-to-image
Converting a pdf to an image is easy.
$pdf = new Spatie\PdfToImage\Pdf($pathToPdf); $pdf->saveImage($pathToWhereImageShouldBeStored);
If the path you pass to
saveImage has the extensions
png the image will be saved in that format. Otherwise, the output will be a jpg.
You can get the total number of pages in the pdf:
$pdf->getNumberOfPages(); //returns an int
By default, the first page of the pdf will be rendered. If you want to render another page you can do so:
$pdf->setPage(2) ->saveImage($pathToWhereImageShouldBeStored); //saves the second page
You can override the output format:
$pdf->setOutputFormat('png') ->saveImage($pathToWhereImageShouldBeStored); //the output wil be a png, no matter what
You can set the quality of compression from 0 to 100:
$pdf->setCompressionQuality(100); // sets the compression quality to maximum
This package uses Ghostscript through Imagick. For this to work Ghostscript's
gs command should be accessible from the PHP process. For the PHP CLI process (e.g. Laravel's asynchronous jobs, commands, etc...) this is usually already the case.
However, for PHP on FPM (e.g. when running this package "in the browser"), you might run into the following problem:
Uncaught ImagickException: FailedToExecuteCommand 'gs'
This can be fixed by adding the following line at the end of your
php-fpm.conf file and restarting PHP FPM. If you're unsure where the
php-fpm.conf file is located you can check
phpinfo(). If you are using Laravel Valet the
php-fpm.conf file will be located in the
env[PATH] = /usr/local/bin:/usr/bin:/bin
This will instruct PHP FPM to look for the
gs binary in the right places.
Hello, I am Harendra Kumar Kanojiya - Owner of this website and a Fullstack web developer. I have expertise in full-stack web development using Angular, PHP, Node JS, Python, Laravel, Codeigniter and, Other web technologies. I also love to write blogs on the latest web technology to keep me and others updated. Thank you for reading the articles.