Exemple de Fusion de Plusieurs Fichiers PDF

Exemple de Fusion de Plusieurs Fichiers PDF

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é.

É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

 

par