How to Edit a PDF File in Laravel?
Teams applying “How to Edit a PDF File in Laravel?” in a production project can use the linked project resource to record implementation, review and debugging time, then compare that effort with tests and shipped functionality instead of treating activity as performance by itself.
Before copying the example into a live application, confirm version-specific behaviour with the official Laravel website and test it against the project’s actual database and runtime.
Sep 30, 2022
Hello Friends,
Suppose you need to see an example of how to edit a pdf file in laravel. We will look at an example of fpdf editing existing pdf laravel. This article will give you a simple example of laravel adding an image to an existing pdf file. I would like to show you a laravel fpdf fpdi example. So, let's follow a few steps to create an instance of laravel setasign/fpdf.
You can use this example with laravel 6, laravel 7, laravel 8, and laravel 9 versions.
Sometimes, we need to edit an existing pdf file in the laravel application. You can not edit existing pdf with dompdf. However, we can add text and images using setasign/fpdf and setasign/fpdi composer packages.
In this example, I will take one sample.pdf file and add text as nicesnippets.com with an image on that pdf file. Then we will save that file as a sample_output.pdf file. so let's see the below step to do this example.
Step 1: Install Laravel
first of all we need to get a fresh Laravel version application using the bellow command, So open your terminal OR command prompt and run the bellow command:
composer create-project laravel/laravel example-app
Step 2: Install fpdf and fpdi Package here, we will install the fpdf and fpdi packages to edit the pdf file. so, let's run the bellow commands:
composer require setasign/fpdf
composer require setasign/fpdi
Step 3: Create Route
In this step we need to create one route for editing the pdf file. let's add the below route on the web.php file.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PDFController;
/*
|--------------------------------------------------------------------------
| 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('fill-data-pdf', [PDFController::class,'index']);
Step 4: Create Controller in this step, we need to create PDFController with index() and fillPDFFile() method.
php artisan make:controller PDFController
Then put your sample.pdf file in the public folder.
Add the below code on the controller file.
app/Http/Controllers/PDFController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use setasign\Fpdi\Fpdi;
class PDFController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index(Request $request)
{
$filePath = public_path("sample.pdf");
$outputFilePath = public_path("sample_output.pdf");
$this->fillPDFFile($filePath, $outputFilePath);
return response()->file($outputFilePath);
}
/**
* Write code on Method
*
* @return response()
*/
public function fillPDFFile($file, $outputFilePath)
{
$fpdi = new FPDI;
$count = $fpdi->setSourceFile($file);
for ($i=1; $i<=$count; $i++) {
$template = $fpdi->importPage($i);
$size = $fpdi->getTemplateSize($template);
$fpdi->AddPage($size['orientation'], array($size['width'], $size['height']));
$fpdi->useTemplate($template);
$fpdi->SetFont("helvetica", "", 15);
$fpdi->SetTextColor(153,0,153);
$left = 10;
$top = 10;
$text = "NiceSnippets.com";
$fpdi->Text($left,$top,$text);
$fpdi->Image("file:///var/www/example-app/public/nice-logo.png", 40, 90);
}
return $fpdi->Output($outputFilePath, 'F');
}
}
Step 5: Start Development Server
Start the development server. Use the PHP artisan serve command and start your server:
php artisan serve
Now you are ready to run our example so run the below command to quick run.
http://localhost:8000/fill-data-pdf
Output:
- How to Notifications With database Driver in Laravel 11?
- How to Send Email Via Notification in Laravel 11?
- How to Install and Configure Laravel 11 Debugbar?
- How to Like Dislike System in Laravel 11?
- How to Paginate a Model with Relationship in Laravel 11?
- Laravel 11 Upload Files to Amazon S3 Example
- Laravel 11 Send WhatsApp Messages Example
- Laravel 11 Rest API Authentication Using JWT Tutorial