How To Generate Invoice PDF In Laravel?

10-Mar-2023

.

Admin

How To Generate Invoice PDF In Laravel?

Hi Friends,

This example is focused on how to generate invoice pdf in laravel?. you can understand a concept of laravel invoice pdf file from view. This article will give you simple example of how to use invoice pdf generate in laravel?.

So, here i will give you very simple example for laravel - how to generate pdf for invoice and purchase order. In this tutorial, I will give you step by step simple how do i make a pdf invoice in laravel?

Here, Creating a basic example of generating an invoice in PDF - Laravel create pdf and view.

So let's start following step.

Step 1 : Install Laravel Fresh Application


Open your terminal OR command prompt and run bellow command:

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

Step 2 : Install dompdf Package

first of all we will install barryvdh/laravel-dompdf composer package by following composer command in your laravel application.

composer require barryvdh/laravel-dompdf

After successfully install package, open config/app.php file and add service provider and alias.

config/app.php

'providers' => [

....

Barryvdh\DomPDF\ServiceProvider::class,

],

'aliases' => [

....

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

]

Step 3 : Add Route

In this is step we need to create routes for items listing. so open your "routes/web.php" file and add following route.

routes/web.php

<?php

use Illuminate\Support\Facades\Route;

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

Route::get('generate-invoice-pdf', array('as'=> 'generate.invoice.pdf', 'uses' => 'PDFController@generateInvoicePDF'));

Step 4 : Add Controller

Here,we require to create new controller PDFController that will manage generatePDF method of route. So let's put bellow code.

app/Http/Controllers/PDFController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use PDF;

class PDFController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function generateInvoicePDF()

{

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

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

}

}

Step 5 : Create View File

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

resources/views/myPDF.blade.php

<!DOCTYPE html>

<html>

<head>

<title>Larave Generate Invoice PDF - Nicesnippest.com</title>

</head>

<style type="text/css">

body{

font-family: 'Roboto Condensed', sans-serif;

}

.m-0{

margin: 0px;

}

.p-0{

padding: 0px;

}

.pt-5{

padding-top:5px;

}

.mt-10{

margin-top:10px;

}

.text-center{

text-align:center !important;

}

.w-100{

width: 100%;

}

.w-50{

width:50%;

}

.w-85{

width:85%;

}

.w-15{

width:15%;

}

.logo img{

width:45px;

height:45px;

padding-top:30px;

}

.logo span{

margin-left:8px;

top:19px;

position: absolute;

font-weight: bold;

font-size:25px;

}

.gray-color{

color:#5D5D5D;

}

.text-bold{

font-weight: bold;

}

.border{

border:1px solid black;

}

table tr,th,td{

border: 1px solid #d2d2d2;

border-collapse:collapse;

padding:7px 8px;

}

table tr th{

background: #F4F4F4;

font-size:15px;

}

table tr td{

font-size:13px;

}

table{

border-collapse:collapse;

}

.box-text p{

line-height:10px;

}

.float-left{

float:left;

}

.total-part{

font-size:16px;

line-height:12px;

}

.total-right p{

padding-right:20px;

}

</style>

<body>

<div class="head-title">

<h1 class="text-center m-0 p-0">Invoice</h1>

</div>

<div class="add-detail mt-10">

<div class="w-50 float-left mt-10">

<p class="m-0 pt-5 text-bold w-100">Invoice Id - <span class="gray-color">#6</span></p>

<p class="m-0 pt-5 text-bold w-100">Order Id - <span class="gray-color">162695CDFS</span></p>

<p class="m-0 pt-5 text-bold w-100">Order Date - <span class="gray-color">03-06-2022</span></p>

</div>

<div class="w-50 float-left logo mt-10">

<img src="https://www.nicesnippets.com/image/imgpsh_fullsize.png"> <span>Nicesnippets.com</span>

</div>

<div style="clear: both;"></div>

</div>

<div class="table-section bill-tbl w-100 mt-10">

<table class="table w-100 mt-10">

<tr>

<th class="w-50">From</th>

<th class="w-50">To</th>

</tr>

<tr>

<td>

<div class="box-text">

<p>Gujarat</p>

<p>360004</p>

<p>Near Haveli Road,</p>

<p>Lal Darvaja,</p>

<p>India</p>

<p>Contact : 1234567890</p>

</div>

</td>

<td>

<div class="box-text">

<p>Rajkot</p>

<p>360012</p>

<p>Hanumanji Temple,</p>

<p>Lati Ploat</p>

<p>Gujarat</p>

<p>Contact : 1234567890</p>

</div>

</td>

</tr>

</table>

</div>

<div class="table-section bill-tbl w-100 mt-10">

<table class="table w-100 mt-10">

<tr>

<th class="w-50">Payment Method</th>

<th class="w-50">Shipping Method</th>

</tr>

<tr>

<td>Cash On Delivery</td>

<td>Free Shipping - Free Shipping</td>

</tr>

</table>

</div>

<div class="table-section bill-tbl w-100 mt-10">

<table class="table w-100 mt-10">

<tr>

<th class="w-50">SKU</th>

<th class="w-50">Product Name</th>

<th class="w-50">Price</th>

<th class="w-50">Qty</th>

<th class="w-50">Subtotal</th>

<th class="w-50">Tax Amount</th>

<th class="w-50">Grand Total</th>

</tr>

<tr align="center">

<td>$656</td>

<td>Mobile</td>

<td>$204.2</td>

<td>3</td>

<td>$500</td>

<td>$50</td>

<td>$100.60</td>

</tr>

<tr align="center">

<td>$656</td>

<td>Mobile</td>

<td>$254.2</td>

<td>2</td>

<td>$500</td>

<td>$50</td>

<td>$120.00</td>

</tr>

<tr align="center">

<td>$656</td>

<td>Mobile</td>

<td>$554.2</td>

<td>5</td>

<td>$500</td>

<td>$50</td>

<td>$100.00</td>

</tr>

<tr>

<td colspan="7">

<div class="total-part">

<div class="total-left w-85 float-left" align="right">

<p>Sub Total</p>

<p>Tax (18%)</p>

<p>Total Payable</p>

</div>

<div class="total-right w-15 float-left text-bold" align="right">

<p>$20</p>

<p>$20</p>

<p>$330.00</p>

</div>

<div style="clear: both;"></div>

</div>

</td>

</tr>

</table>

</div>

</html>

you will download file as like bellow:

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

I hope it can help you...

#Css

#Html

#Laravel