Dans ce tutoriel, nous allons installer les packages Composer setasign/fpdi et setasign/fpdf, puis créer un exemple. Nous allons également créer deux routes, GET et POST. Ensuite, nous allons créer un fichier de contrôleur avec un fichier Blade. Lorsque l’utilisateur sélectionne plusieurs fichiers PDF, le résultat sera un seul fichier fusionné.
Table des matières : [Masquer]
Étape 1 : Installer Laravel 11
composer create-project laravel/laravel example-app
Tout d’abord, nous devons obtenir une nouvelle application Laravel 11 en exécutant la commande suivante. Ouvrez votre terminal ou invite de commande et exécutez :
Étape 2 : Installer les Packages
Ensuite, nous allons installer les packages setasign/fpdf et setasign/fpdi via Composer dans notre application Laravel.
composer require setasign/fpdf
composer require setasign/fpdi
Étape 3 : Créer les Routes
À cette étape, nous allons créer les routes pour afficher le formulaire. Ouvrez le fichier routes/web.php et ajoutez les routes suivantes :
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PDFController;
Route::get('merge-pdf', [PDFController::class, 'index']);
Route::post('merge-pdf', [PDFController::class, 'store'])->name('merge.pdf.post');
Étape 4 : Créer le Contrôleur
À cette étape, nous allons créer un nouveau contrôleur PDFController qui gérera les méthodes GET et POST des routes. Ajoutez le code suivant :
app/Http/Controllers/PDFController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use setasign\Fpdi\Fpdi;
class PDFController extends Controller
{
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('mergePDF');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'filenames' => 'required',
'filenames.*' => 'mimes:pdf'
]);
if($request->hasFile('filenames')){
$pdf = new Fpdi();
foreach ($request->file('filenames') as $key => $value) {
$pageCount = $pdf->setSourceFile($value->getPathName());
for ($i=0; $i AddPage();
//import a page then get the id and will be used in the template
$tplId = $pdf->importPage($i+1);
//use the template of the imporated page
$pdf->useTemplate($tplId);
}
}
return response($pdf->Output())
->header('Content-Type', 'application/pdf');
}
}
}
Étape 5 : Créer le Fichier Blade
Enfin, créons le fichier mergePDF.blade.php (dans resources/views/mergePDF.blade.php) pour la mise en page et ajoutez le code suivant :
resources/views/mergePDF.blade.php
<html lang="en">
<head>
<title>Laravel 11 Merge Multiple PDF Files Example - ItSolutionStuff.com</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="card mt-5">
<h3 class="card-header p-3">Laravel 11 Merge Multiple PDF Files Example - ItSolutionStuff.com</h3>
<div class="card-body">
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form method="post" action="{{ route('merge.pdf.post') }}" enctype="multipart/form-data">
{{csrf_field()}}
<input type="file" name="filenames[]" class="myfrm form-control" multiple="">
<button type="submit" class="btn btn-success" style="margin-top:10px">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
Lancer l’Application Laravel
Toutes les étapes nécessaires sont complétées. Maintenant, exécutez la commande suivante pour démarrer l’application Laravel :
php artisan serve
Ensuite, ouvrez votre navigateur et accédez à l’URL suivante pour voir le résultat de l’application :
http://localhost:8000/merge-pdf