How to generate PDF in laravel 5 using laravel-dompdf package

Brijpal Sharma
laravel html   Publish on:-September 13th, 2018 , Category:- Web Development


How to generate PDF in laravel 5 using laravel-dompdf package is today topic. we learn how to generate PDF by package.

First, we need to install laravel-dompdf package in our laravel project.

Step:1 Download all laravel-dompdf package in our laravel project

Using following command.

composer require barryvdh/laravel-dompdf

 

Step:2 configure this package in our laravel project.

Add providers and aliases So go to the config/app.php and add.

'providers' => [
    ....
    Barryvdh\DomPDF\ServiceProvider::class,
],
'aliases' => [
    ....
    'PDF' => Barryvdh\DomPDF\Facade::class,
],

Ok, Now we set aliases PDF so we use this aliases in the controller. we just need to add it in our namespace like,

use PDF

 

Step:3 Create a master page.

<!-- master.blade.php -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset=utf-8>
    <link rel="stylesheet" href="css/app.css">
  </head>
  <body>
      <div class="container">
          @yield('content')
      </div>
  </body>
</html>

 

Step:4 Create a form blade page for input the data.

<!-- form.blade.php -->

@extends('master')
@section('content')
<form method="post" action="{{url('submitForm')}}">
  {{csrf_field()}}
  <div > <!-- Name -->
   <label for="full_name_id" >Name</label>
   <input type=text id="name_id" name=name placeholder="John Deer">
  </div>

  <div > <!-- Street 1 -->
   <label for="street1_id" >Street Address 1</label>
   <input type=text id="street1_id" name=street_address placeholder="Street address, P.O. box, company name, c/o">
  </div>

  <div > <!-- City-->
   <label for="city_id" >City</label>
   <input type=text id="city_id" name=city placeholder="Smallville">
  </div>

  <div > <!-- Zip Code-->
   <label for="zip_id" >Zip Code</label>
   <input type=text id="zip_id" name=zip_code placeholder="#####">
  </div>

  <div > <!-- Submit Button -->
   <button type=submit >Buy!</button>
  </div>

  </form>
@endsection

 

Step:5 Config the route

// web.php

<?php

Route::get('/', function () {
    return view('form');
});

Route::post('submitForm','[email protected]');

 

Step:6 Create a model for data validate UserDetail.php

// UserDetail.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class UserDetail extends Model
{
    protected $fillable = ['name','street_address','zip_code','city'];
}

 

Step: 7 Create a new controller.

// UserDetailController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\UserDetail;

class UserDetailController extends Controller
{

    public function store(Request $request){

      $user = new UserDetail([
        'name' => $request->get('name'),
        'street_address' => $request->get('street_address'),
        'city' => $request->get('city'),
        'zip_code' => $request->get('zip_code')
      ]);

      $user->save();
      return redirect('/index');
    }
    public function index(){

      $users = UserDetail::all();

      return view('index', compact('users'));
    }
}

 

Step: 8 Update Web.php

Create a new Route in the web.php file for display the listing page.

// web.php

Route::get('/index','[email protected]');

 

Step: 9 Create a view file for display the Stored data.

<!-- index.blade.php -->

@extends('master')
@section('content')
<table class="table table-striped">
  <thead>
    <th>ID</th>
    <th>Full Name</th>
    <th>Address</th>
    <th>City</th>
    <th>Zip Code</th>
    <th>Action</th>
  </thead>
  <tbody>
    @foreach($users as $user)
    <tr>
      <td>{{$user->id}}</td>
      <td>{{$user->name}}</td>
      <td>{{$user->street_address}}</td>
      <td>{{$user->city}}</td>
      <td>{{$user->zip_code}}</td>
    </tr>
    @endforeach
  </tbody>
</table>
@endsection

Step: 10 updates web.php file

Create a new route for download the pdf file.

//web.php

Route::get('/downloadPDF/{id}','[email protected]');

Update index.blade.php file with the PDF download button.

@extends('master')
@section('content')
<table class="table table-striped">
  <thead>
    <th>ID</th>
    <th>Name</th>
    <th>Address</th>
    <th>City</th>
    <th>Zip Code</th>
    <th>Action</th>
  </thead>
  <tbody>
    @foreach($users as $user)
    <tr>
      <td>{{$user->id}}</td>
      <td>{{$user->name}}</td>
      <td>{{$user->street_address}}</td>
      <td>{{$user->city}}</td>
      <td>{{$user->zip_code}}</td>
      <td><a href="{{action('[email protected]', $user->id)}}">PDF</a></td>
    </tr>
    @endforeach
  </tbody>
</table>
@endsection

 

Step:11 Create a new file pdf.blade.php

create a new view file for design our pdf blade.

<!-- pdf.blade.php -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset=utf-8>
    <title></title>
  </head>
  <body>
    <table class="table table-bordered">
      <tr>
        <td>
          {{$user->name}}
        </td>
        <td>
          {{$user->street_address}}
        </td>
      </tr>
      <tr>
        <td>
          {{$user->city}}
        </td>
        <td>
          {{$user->zip_code}}
        </td>
      </tr>
    </table>
  </body>
</html>

 

Step:12 Create a controller function to download the PDF.

// UserDetailController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PDF;
use App\UserDetail;

class UserDetailController extends Controller
{

    public function store(Request $request){

      $user = new UserDetail([
        'name' => $request->get('name'),
        'street_address' => $request->get('street_address'),
        'city' => $request->get('city'),
        'zip_code' => $request->get('zip_code')
      ]);

      $user->save();
      return redirect('/index');
    }
    public function index(){

      $users = UserDetail::all();

      return view('index', compact('users'));
    }

    public function downloadPDF($id){
      $user = UserDetail::find($id);

      $pdf = PDF::loadView('pdf', compact('user'));
      return $pdf->download('invoice.pdf');

    }
}

Finally we completed How to generate PDF in laravel 5 using laravel-dompdf package Using laravel-dompdf package we created an application to download a file as PDF format.


Brijpal Sharma

Hello, My Name is Brijpal Sharma. I am a Web Developer, Professional Blogger and Digital Marketer from India. I am the founder of Codermen. I started this blog to help web developers & bloggers by providing easy and best tutorials, articles and offers for web developers and bloggers...


0 Comments

You must be logged in to post a comment.