Laravel 7.x, 6.x Generate/Create PDF Example

Generate pdf in laravel 7.x/6.x. Here, we would like to share with you how to create pdf and download pdf in the laravel 7/6 Application.

Most of the E-commerce projects, Shopping websites, E-Marketing Websites have built-in laravel. These types of websites generate invoices, acknowledgment, tickets and many more things. In this case, we use the laravel dom-pdf packages and easily create invoices, acknowledgments, tickets, etc.

Generate or create PDF in laravel 7/6, we will use laravel dom-pdf package to generate/create and download pdf.

Generate/Create PDF in Laravel 7/6

Use the below given steps to generate or create pdf in laravel. As well as download pdf in laravel:

  1. Install Laravel App
  2. Setup Database
  3. Install laravel-dompdf Package
  4. Make PDF Route
  5. Create GeneratePDF Controller
  6. Create Blade view for Generate Pdf
  7. Start Development Server

1. Install Laravel App

First, we need to download the laravel fresh setup. Use the below command and download fresh new laravel setup :

composer create-project --prefer-dist laravel/laravel blog

2. Setup Database

After successfully download laravel Application, Go to your project .env file and set up database credential and move next step :

 DB_CONNECTION=mysql 
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=here your database name here
DB_USERNAME=here database username here
DB_PASSWORD=here database password here

3. Install laravel-dompdf Package

Now, we need to download the laravel-dompdf package, it package help to create and download pdf. Laravel dompdf pacakge has convert blade view to pdf. Use the below command and download laravel dompdf :

composer require barryvdh/laravel-dompdf

After successfully install the laravel dompdf package, open the config/app.php and config the providers and aliases :


'providers' => [

Barryvdh\DomPDF\ServiceProvider::class,
],

'aliases' => [

'PDF' => Barryvdh\DomPDF\Facade::class,
]

4. Make PDF Route

Now, We will create two routes in web.php file. Go to /routes/web.php file and create two below routes here :

 Route::get('pdf_form', 'GeneratePdfController@pdfForm');
 Route::get('pdf_download', 'GeneratePdfController@pdfDownload');

5. Create GeneratePDF Controller

Here, we need to create a controller name GeneratePdfController. Use the below command and create Controller :

php artisan make:controller GeneratePdfController

After successfully create controller go to app/controllers/GeneratePdfController.php and put the below methods :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Redirect;
use PDF;

class GeneratePdfController extends Controller
{

    public function pdfForm()
    {
        return view('pdf_form');
    }

    public function pdfDownload(){

       request()->validate([
        'name' => 'required',
        'email' => 'required|email',
        'message' => 'required'
        ]);

         $data =
         [
            'name' => $request->name,
            'email' => $request->email,
            'message' => $request->message
         ];
       $pdf = PDF::loadView('pdf_download', $data);

       return $pdf->download('tutsmake.pdf');
    }


}

6. Create Blade view for Generate Pdf

Next, we need to create blade view file. Go to app/resources/views and create one file name pdf_form.blade.php :

<html>
<head>
<title>Laravel Generate & Download Pdf Tutorial</title>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
</head>
<style type="text/css">
body{
background-color: #f1f1f1;
}
</style>
<body>
<div class="container contact">
<br><br><br>
<div class="row">
<div class="col-md-8 offset-md-2">
<form action="{{ url('pdf_download') }}" method="post" accept-charset="utf-8">
@csrf
<div class="contact-form">
<div class="form-group">
<label class="control-label col-sm-2" for="fname">First Name:</label>
<div class="col-sm-10">
   <input type="text" class="form-control" id="name" placeholder="Enter Name" name="name">
   <span class="text-danger">{{ $errors->first('name') }}</span>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="email">Email:</label>
<div class="col-sm-10">
   <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
   <span class="text-danger">{{ $errors->first('email') }}</span>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="comment">Comment:</label>
<div class="col-sm-10">
   <textarea class="form-control" rows="5" name="message" id="message"></textarea>
   <span class="text-danger">{{ $errors->first('message') }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
   <button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</div>
</form>
</div>
</div>
<br><br><br><br>
</div>
</body>
</html>

Now we create a one more blade view file name pdf_download.blade.php. Go to app/resources/views create file. This blade view file will download as pdf file. so put the below code here :

<body>
  <div id="content">
    <h2>Hello <b> <span style="color:red">{{ ucfirst($name) }}</span> </b></h2>
    <p>
    	{{ $message }}
    </p>
  </div>
</body>

7. Run Development Server

Now, we need to start development server. Use the php artisan serve command and start your server :

 php artisan serve
If you want to run the project diffrent port so use this below command
php artisan serve --port=8080

Now we are ready to run our example so run bellow command to quick run.

http://localhost:8000/pdf

Conclusion

In this laravel pdf generate and download tutorial, you have successfully created a PDF file and downloaded the pdf file in laravel7/6.

Note that, If you want to replace other data in your pdf file so you can change it. our examples run quickly.

Recommended Laravel Posts

If you have any questions or thoughts to share, use the comment form below to reach us.

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *