Laravel 10 How-To: Convert PDF Document to Image Tutorial

Last Updated on by in Laravel

Laravel convert pdf document to an image tutorial; with the help of this extensive guide, you will find out the profound technique on how to convert PDF to image in laravel application using the PHP imagick extension.

The imagick PHP extension is free on top of that, an open-source, cross-platform library for showing, creating, transforming, edition images.

It is a robust plugin that supports an extensive array of image file formats; generically, it is broadly used in open source web applications.

In this tutorial, we will share with you how to install PHP imagick extension and how to set it up in a PHP environment using the command line.

For this laravel pdf to image tutorial, we will use this impeccable library to convert a PDF file to an image file in the Laravel app.

Laravel 10 Convert PDF to Image Example

Follow the recommended steps gradually to create the demo app:

  • Step 1: Construct Laravel Project
  • Step 2: Install PHP Imagick Extension
  • Step 3: Generate and Configure Controller
  • Step 4: Create Route
  • Step 5: Try Out Laravel App

Construct Laravel Project

Make sure you have PHP and Composer already installed on your system, after which you can create a new laravel application:

composer create-project --prefer-dist laravel/laravel demo-app

Thereafter, get inside the newly created project:

Install PHP Imagick Extension

This tutorial’s foundational step is to install the PHP Imagick extension, head over to the terminal window, run the suggested command; it will install the imagick extension on the fly.

sudo apt install php-imagick

The recommended command helps in listing all the available versions via Ubuntu repositories:

sudo apt list php-magick -a

The -a tag commands to apt to list down all the package version:

php-imagick/bionic,now 3.4.3~rc2-2ubuntu4 amd64 [installed]

In the subsequent step, you require to restart the apache web server with offred command:

sudo systemctl restart apache2

Here is another command which helps you confirms the module’s configuration:

php -m | grep imagick

If you are seeing the extension name on the console screen that means installation done as expected:

imagick

The other way to verify the module installation is to execute the phpinfo() method from the terminal window:

php -r 'phpinfo();' | grep imagick

You can check the given detials about the extention:

imagick
imagick module => enabled
imagick module version => 3.4.4
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.set_single_thread => 1 => 1
imagick.shutdown_sleep_count => 10 => 10
imagick.skip_version_check => 1 => 1

On the other hand, the phpinfo() method can also give you access to the module information directly on a web browser:

Laravel Convert PDF to Image with Imagick Example

Please make some update on given path:

/etc/ImageMagick-6/policy.xml

< policy domain="coder" rights="none" pattern="PDF" / >

To convert:

< policy domain="coder" rights="read|write" pattern="PDF" / >

Generate and Configure Controller

Further, go to terminal use the php artisan command to generate or make a new controller:

php artisan make:controller ImageController

In response to the execution of the above command, a new controller file has generated; hence append the following code in the app/controllers/ImageController.php file:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Blade;
use Imagick;


class ImageController extends Controller
{
    public function index()
    {
        $imgExt = new Imagick();
        $imgExt->readImage(public_path('pdf-document.pdf'));
        $imgExt->writeImages('pdf_image_doc.jpg', true);

        dd("Document has been converted");
    }
}

Create Route

In this step, create a new route that will make the GET request in conjunction with the associated controller to convert pdf to image.

Hence open routes/web.php file import the controller on the top section, next define the Route and declare the Route’s name also pass the controller name inside of it.

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ImageController;

/*
|--------------------------------------------------------------------------
| Web Route
|--------------------------------------------------------------------------
*/

Route::get('convert-pdf-to-image', [ImageController::class, 'index'])->name('form');

Start Laravel App

Subsequently, head over to console afterward run the command similarly run the laravel application:

php artisan serve

Here is the url for testing the laravel demo app:

http://localhost:8000/convert-pdf-to-image

Conclusion

Ultimately, the laravel pdf to image converter tutorial is over; in this comprehensive guide, we studied bit by bit how to convert pdf to image using the imagick open-source extension.