Welcome guys, In this article Here, we will know how to create a PDF in laravel. Making a PDF file and download in Laravel is simple and easy. if you have question about laravel PDF then i will give simple example with solution.
Step 1: Building a New Application
You can ignore this step if you already have an application downloaded or else, run the following command to create a brand new laravel project.
composer create-project laravel/laravel laravel-pdf --prefer-dist
After downloaded new application or already installed then moved our application directory run the following command or using your own method
cd laravel-pdf
Step 2: Configure Database Connection
In this type of project, we must give precedence to the database connection, generically it should be configured before getting started. Incorporate the following code in .env file with your database details.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Step 3: Create a Model with Migration
Run this command to create a modal with migration
php artisan make:model Item -m
<? php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
use HasFactory;
}
Step 4: Install DomPDF Package
Next, we will install DomPDF package using following composer command, let's run bellow command:
composer require barryvdh/laravel-dompdf
After install DomPDF package we have adding the service provider in config/app.php file and add the following code.
'providers' => [
........
Barryvdh\DomPDF\ServiceProvider::class,
........
],
'aliases' => [
........
'PDF' => Barryvdh\DomPDF\Facade::class,
........
],
Step 5: Create Controller
Make a file in app/Http/Controllers/ItemController.php and add the given code.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Item;
use Carbon\Carbon;
use PDF;
class ItemController extends Controller
{
/**
* THis method use for exports as pdf files
* @return \Illuminate\Contracts\Support\Renderable
*/
public function itemExportPdf(Request $request){
$items = Item::query();
$items = $items->get();
$pdfObject = PDF::loadView('exports.items', compact('items'));
// download PDF file with download method
return $pdfObject->download('pdf_file.pdf');
}
}
Step 6: Create View File
Create a view file in resources/view/exports/items.blade.php and add the following code.
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<title>{{ config('app.name', 'Laravel') }}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<style>
@page { size: 10cm 20cm landscape; }
</style>
</head>
<body>
<div class="container">
<table class="table table-bordered table-lg">
<thead class="thead-dark">
<tr>
<th>Sr</th>
<th>Name</th>
<th>Serial Number</th>
</tr>
</thead>
<tbody>
@foreach($items as $key => $data)
<tr>
<td>{{$key + 1}}</td>
<td>{{$data->item_name}}</td>
<td>{{$data->item_serial_number}}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</body>
</html>
Step 7: Add Route
Open routes/web.php file and add the following route.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ItemController;
Route::group(['prefix'=>'export/pdf'], function(){
Route::get('/item', [ItemController::class, 'itemExportPdf'])->name('item.export.pdf');
});
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/export/pdf/item