How to generate invoice pdf in laravel | websolutioncode.com
How to generate invoice pdf in laravel | websolutioncode.com

How to generate PDF invoices in Laravel

In this tutorial, we’ll walk through the process of creating a PDF invoice generation system in Laravel. Generating PDF invoices is a common requirement for many web applications, especially those dealing with e-commerce or billing systems. We’ll be using the Laravel framework and the popular package called “barryvdh/laravel-dompdf” to achieve this.

Prerequisites

Before we start, make sure you have the following prerequisites installed on your system:

  1. Laravel installed (you can follow the official Laravel installation guide: Laravel Installation).
  2. Composer installed (you can follow the official Composer installation guide: Composer Installation).

Step 1: Install the Required Package

In your Laravel project directory, open a terminal and run the following command to install the “barryvdh/laravel-dompdf” package:

composer require barryvdh/laravel-dompdf

This package integrates the Dompdf library with Laravel, making it easy to generate PDFs.

Step 2: Configure the Package

After the installation, you need to add the service provider and alias. Open the config/app.php file and add the following lines:

'providers' => [
    // ...
    Barryvdh\DomPDF\ServiceProvider::class,
],

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

This registers the package service provider and facade.

Step 3: Create the Invoice Controller

Generate a controller using the following command:

php artisan make:controller InvoiceController

Open the generated InvoiceController.php file in the app/Http/Controllers directory.

Step 4: Implement the Invoice Generation Logic

Add the following code to your InvoiceController.php file:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PDF;

class InvoiceController extends Controller
{
    public function generateInvoice()
    {
        $data = [
            'invoice_number' => 'INV123',
            'customer_name' => 'John Doe',
            'amount' => 100.00,
        ];

        $pdf = PDF::loadView('invoice', $data);

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

In this example, we’re passing some sample data to the invoice.blade.php view, which we’ll create in the next step.

Step 5: Create the Blade View

Create a new Blade view file named invoice.blade.php in the resources/views directory. Add the following content:

<!DOCTYPE html>
<html>
<head>
    <title>Invoice</title>
</head>
<body>
    <h1>Invoice</h1>
    <p>Invoice Number: {{ $invoice_number }}</p>
    <p>Customer: {{ $customer_name }}</p>
    <p>Amount: ${{ $amount }}</p>
</body>
</html>

This is a simple HTML template for our invoice.

Step 6: Define Routes

Open the routes/web.php file and add the following route definition:

use App\Http\Controllers\InvoiceController;

Route::get('/generate-invoice', [InvoiceController::class, 'generateInvoice']);

This defines a route that triggers the generateInvoice method in the InvoiceController when accessed.

Step 7: Test the Invoice Generation

Run the Laravel development server:

php artisan serve

Visit http://localhost:8000/generate-invoice in your browser, and you should be prompted to download the generated PDF invoice.

Congratulations! You’ve successfully implemented a PDF invoice generation system in Laravel. Feel free to customize the code and views to suit your specific requirements.

Leave a Reply