To add a digital signature on pdf in laravel 10; In this tutorial, you will learn how to add a digital signature on pdf using the DomPDF TCPDF library in Laravel 10 apps.
How to Add Digital Signature on PDF in Laravel 10
Let’s get started with adding a digital signature on PDF in laravel 10 apps:
- Step 1: Create a New Laravel Project
- Step 2: Install Dependencies
- Step 3: Configure Laravel DomPDF
- Step 4: Set Up TCPDF for Digital Signatures
- Step 5: Create a Controller
- Step 6: Create a Route
- Step 7: Generate a PDF with Digital Signature
Step 1: Create a New Laravel Project
First of all, open your cmd or terminal and execute the following command into it to install and setup new laravel 10 app into server:
composer create-project --prefer-dist laravel/laravel digital-signature-pdf cd digital-signature-pdf
Step 2: Install Dependencies
Next, execute the following commands to install laravel-dompdf
for PDF generation and tcpdf
for digital signatures:
composer require barryvdh/laravel-dompdf composer require tecnickcom/tcpdf
Step 3: Configure Laravel DomPDF
Once you have installed laravel-dompdf
into your laravel project. Now you need to configure dompdf with laravel apps.
So, Open the config/app.php
file and add the following line to the providers
array:
Barryvdh\DomPDF\ServiceProvider::class,
Next, add the following line to the aliases
array in the same file:
'PDF' => Barryvdh\DomPDF\Facade::class,
Step 4: Set Up TCPDF for Digital Signatures
Next, You need to configure TCPDF for digital signatures. Create a new file named tcpdf_signature_config.php
in the root directory of your Laravel project with the following content:
<?php return [ 'signature_title' => 'Digital Signature', 'signature_title_page' => 'Digital Signature - Page %s', 'signature_font_size' => 8, 'signature_image_width' => 25, 'signature_image_height' => 25, 'signature_file' => '', // Path to your signature image file 'signature_coordinates' => [ 'x' => 10, 'y' => 10, ], ];
Important Note:- Replace 'signature_file'
with the actual path to your signature image file.
Step 5: Create a Controller
Next, open again your cmd and execute the following command into it to create a new controller for handling PDF generation and digital signatures:
php artisan make:controller PDFSignatureController
Once you have created controller class. Next, you need to edit the PDFSignatureController.php
file in the app/Http/Controllers
directory with the following code:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use PDF; class PDFSignatureController extends Controller { public function generatePDFWithSignature() { // Load TCPDF configuration $config = config('tcpdf_signature_config'); // Create a new TCPDF instance $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // Set document properties $pdf->SetCreator(config('app.name')); $pdf->SetAuthor('Your Name'); $pdf->SetTitle('Sample PDF with Digital Signature'); $pdf->SetSubject('Digital Signature Example'); $pdf->SetKeywords('laravel, pdf, digital signature'); // Set header and footer fonts $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // Set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); // Set margins $pdf->SetMargins(10, 10, 10); // Set auto page breaks $pdf->SetAutoPageBreak(TRUE, 10); // Set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); // Initialize PDF document $pdf->AddPage(); // Output digital signature image if (!empty($config['signature_file'])) { $signatureX = $config['signature_coordinates']['x']; $signatureY = $config['signature_coordinates']['y']; $pdf->Image($config['signature_file'], $signatureX, $signatureY, $config['signature_image_width'], $config['signature_image_height']); } // Output text for digital signature $pdf->SetFont('helvetica', '', $config['signature_font_size']); $pdf->SetXY(40, 20); $pdf->Cell(0, 0, 'Digitally signed by:', 0, 1); $pdf->SetXY(40, 25); $pdf->Cell(0, 0, 'Your Name', 0, 1); $pdf->SetXY(40, 30); $pdf->Cell(0, 0, 'Date: ' . date('Y-m-d H:i:s'), 0, 1); // Output PDF to the browser $pdf->Output('sample.pdf', 'I'); } }
Step 6: Create a Route
In your routes/web.php
file, add a route to your newly created controller method:
use App\Http\Controllers\PDFSignatureController; Route::get('/generate-pdf', [PDFSignatureController::class, 'generatePDFWithSignature']);
Step 7: Generate a PDF with Digital Signature
Now, you can generate a PDF with a digital signature by visiting the following URL in your browser:
http://your-domain/generate-pdf
Conclusion
Congratulations 🎊! You have successfully implemented digital signature functionality for PDF documents in Laravel 10 using TCPDF and Laravel DomPDF.