Merge PDF di Laravel dengan Laravel-PDFMerger Package

Merge PDF di Laravel dengan Laravel-PDFMerger Package

id6 min read • 6104 views

Laravel PDF Merger - PDF (Portable Document Format) telah menjadi format yang sangat umum untuk berbagi dokumen digital secara luas. Dalam beberapa situasi, Kita mungkin perlu menggabungkan beberapa file PDF menjadi satu file untuk memudahkan distribusi atau penyimpanan. Di dalam ekosistem Laravel, ada banyak cara untuk melakukan ini, dan salah satunya adalah dengan menggunakan package Laravel-PDFMerger yang dikembangkan oleh Webklex. Di artikel ini, kita akan membahas cara menggabungkan beberapa file PDF menggunakan Laravel-PDFMerger package.

Mengenal Laravel-PDFMerger Package

Laravel-PDFMerger adalah sebuah package yang memungkinkan kita untuk menggabungkan beberapa file PDF menjadi satu file PDF di dalam proyek Laravel kita. Package ini memanfaatkan berbagai fitur Laravel, seperti dependency injection dan facades, untuk mempermudah proses penggabungan PDF.

Persiapan Awal

Sebelum Kita dapat menggunakan Laravel-PDFMerger, kita harus melakukan beberapa langkah seperti berikut ini:

Instalasi Laravel-PDFMerger Package

Buka terminal dan masuk ke direktori proyek Laravel. Kemudian, jalankan perintah berikut untuk menginstal Laravel-PDFMerger package:

composer require webklex/laravel-pdfmerger

Setup PDFMerger

Setelah instalasi selesai, kita perlu menambahkan PDFMerger sebagai service provider di dalam proyek kita. Buka config/app.php dan tambahkan baris berikut di dalam baris providers dan aliases:

'providers' => [
    ...
    Webklex\PDFMerger\Providers\PDFMergerServiceProvider::class
],

'aliases' => [
    ...
    'PDFMerger' => Webklex\PDFMerger\Facades\PDFMergerFacade::class
]

Menggabungkan PDF

Setelah konfigurasi awal selesai, Kita dapat mulai menggabungkan file PDF menggunakan Laravel-PDFMerger. Berikut adalah contoh langkah-langkahnya:

Buat Controller

Pertama, buatlah sebuah Controller baru untuk mengelola proses penggabungan PDF. kita bisa menggunakan perintah artisan untuk membuat controller:

php artisan make:controller PDFMergerController

Kemudian buka file controller yang baru saja dibuat tersebut dan sesuaikan kodenya menjadi seperti di bawah ini.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Webklex\PDFMerger\Facades\PDFMergerFacade as PDFMerger;

class PDFMergerController extends Controller
{
    public function merge(Request $request)
    {
        $this->validate($request, [
            'files' => 'required',
            'files.*' => 'mimes:pdf'
        ]);

        $files = $request->file('files');
        if ($request->hasFile('files')) {
            $pdf = PDFMerger::init();
            foreach ($files as $file) {
                $pdf->addPDF($file->getRealPath(), 'all');
            }
            $pdf->merge();
            $filename = time() . '.pdf';
            Storage::disk('public')->put($filename, $pdf->output());
        }

        return response()->download(storage_path('app/public/' . $filename));
    }
}

Pada PDFMergerController, kita menambahkan method merge beserta fungsi merge PDF dari laravel-pdfmerger package dan kita tambahkan fungsi download file hasil merger.

Setup Route

Selanjutnya buka file routes/web.php dan tambahkan route seperti di bawah ini.

Route::post('merger-pdf',[App\Http\Controllers\PDFMergerController::class, 'merge'])->name('merge-pdf');

Setup View

Kemudian, mari kita buat tampilannya. Silakan buka file welcome.blade.php dan ubah kodenya menjadi seperti di bawah ini.

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- CSRF Token -->
        <meta name="csrf-token" content="{{ csrf_token() }}">
        <title>
            Merge PDF Files in Laravel
        </title>
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
    </head>
    <body>
        <main class="py-5">
            <div class="container">
                <div class="row d-flex justify-content-center">
                    <div class="col-8">
                        <h2 class="fs-5 py-4 text-center">
                            Merge PDF Files in Laravel
                        </h2>
                        <div class="card border rounded shadow">
                            <div class="card-body">
                                <form method="POST" action="{{ route('merge-pdf') }}" enctype="multipart/form-data">
                                    @csrf
                                    <div class="mb-3">
                                        <label for="files" class="form-label">Files</label>
                                        <input type="file" name="files[]" id="files" class="form-control" multiple>
                                    </div>
                                    <button class="btn btn-primary" type="submit">Merge</button>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </main>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous"></script>
    </body>
</html>

Pada view welcome.blade.php, kita hanya akan menambahkan form yang mengarah ke route pdf merger.

Testing

Oke, setelah melakukan langkah-langkah di atas, sekarang coba jalankan laravel project kalian dan buka pada browser. Coba pilih beberapa file PDF dan klik Merge, jika berhasil maka file hasil dari merge akan terdownload.

merge pdf files in laravel

Kesimpulan

Dengan menggunakan package Laravel-PDFMerger dari Webklex, Kita dapat dengan mudah menggabungkan beberapa file PDF menjadi satu file yang lebih mudah dikelola dan dibagikan. Dengan langkah-langkah yang telah dijelaskan di atas, Kita dapat mengintegrasikan fungsi penggabungan PDF ke dalam proyek Laravel Kita dengan cepat dan efisien. Package ini menawarkan fleksibilitas dan kemudahan penggunaan, memudahkan Kita dalam mengelola dan memanipulasi dokumen PDF sesuai kebutuhan Kita.

 

Full Documentation: Laravel PDF Merger

Published on August 06, 2023
Last updated on June 03, 2026
Loading Comments

If you like this post and want to support us, you can support us via buymeacoffee or trakteer.