How to generate PDF in laravel 5 using laravel-dompdf 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.