How to Generate PDF File using DomPDF in Laravel 11?

23-Mar-2024

.

Admin

How to Generate PDF File using DomPDF in Laravel 11?

Hi, Dev

In this guide, I'll walk you through the process of generating a PDF file in Laravel 11 using DomPDF.

To accomplish this, we'll leverage the DomPDF Composer package. First, we'll install the package and then proceed to generate a PDF file containing dummy user data and text. Follow the steps outlined below to create your PDF file:

Step for Laravel 11 Create PDF File using DomPDF Example


Step 1: Install Laravel 11

Step 2: Install DomPDF Package

Step 3: Create Controller

Step 4: Add Route

Step 5: Create View File

Run Laravel App

Step 1: Install Laravel 11

This step is not required; however, if you have not created the Laravel app, then you may go ahead and execute the below command:

composer create-project laravel/laravel example-app

Step 2: Install DomPDF Package

Next, we will install the DomPDF package using the following Composer command. Let's run the command below:

composer require barryvdh/laravel-dompdf

Step 3: Create Controller

In this step, we will create a PDFController with a method called generatePDF() where we will write the code to generate a PDF. So, let's create the controller using the command below.

php artisan make:controller PDFController

In the `PDFController`, we also get users table data and display it into a PDF file. So, you can add some dummy data to the users table by using the following Tinker command:

php artisan tinker

User::factory()->count(10)->create()

Now, update the code in the controller file.

app/Http/Controllers/PDFController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\User;

use PDF;

class PDFController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function generatePDF()

{

$users = User::get();

$data = [

'title' => 'Welcome to NiceSnippets.com',

'date' => date('m/d/Y'),

'users' => $users

];

$pdf = PDF::loadView('myPDF', $data);

return $pdf->download('NiceSnippets.pdf');

}

}

Step 4: Add Route

Furthermore, open `routes/web.php` file and add a GET route.

routes/web.php

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

Step 5: Create View File

In the last step, let's create `myPDF.blade.php` (`resources/views/myPDF.blade.php`) for the layout of the PDF file and put the following code:

resources/views/myPDF.blade.php

<!DOCTYPE html>

<html>

<head>

<title>Laravel 11 Generate PDF Example - NiceSnippets.com</title>

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" >

</head>

<body>

<h1>{{ $title }}</h1>

<p>{{ $date }}</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod

tempor incididunt ut labore et dolore magna aliqua.</p>

<table class="table table-bordered">

<tr>

<th>ID</th>

<th>Name</th>

<th>Email</th>

</tr>

@foreach($users as $user)

<tr>

<td>{{ $user->id }}</td>

<td>{{ $user->name }}</td>

<td>{{ $user->email }}</td>

</tr>

@endforeach

</table>

</body>

</html>

Run Laravel App:

All the required steps have been done, now you have to type the given below command and hit enter to run the Laravel app:

php artisan serve

Now, Go to your web browser, type the given URL and view the app output:

http://localhost:8000/generate-pdf

you will download the file as like below:

Now we are ready to run this example and check it...

I hope it can help you...

#Laravel 11