Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #37: Membuat Laporan PDF dengan Dompdf di Laravel

Tentu, ini artikel yang Anda minta:


 

 

Di banyak aplikasi bisnis, kebutuhan untuk menghasilkan laporan dalam format PDF adalah hal yang umum, entah itu faktur, ringkasan data, atau dokumen lainnya. Laravel tidak memiliki fitur bawaan untuk membuat PDF, tetapi integrasinya dengan pustaka pihak ketiga seperti Dompdf menjadikannya sangat mudah. Dompdf adalah pustaka yang kuat untuk mengubah HTML menjadi PDF.

Dalam tutorial Laravel ke-37 ini, kita akan membahas langkah demi langkah cara menginstal Dompdf dan menggunakannya untuk membuat laporan PDF di aplikasi Laravel Anda.


 

1. Menginstal Dompdf

 

Langkah pertama adalah menginstal paket barryvdh/laravel-dompdf melalui Composer. Paket ini adalah wrapper yang mempermudah penggunaan Dompdf dalam lingkungan Laravel.

Buka terminal Anda dan jalankan perintah berikut:

Bash

composer require barryvdh/laravel-dompdf

Setelah instalasi selesai, Dompdf akan secara otomatis ditemukan oleh Laravel (berkat package discovery).


 

2. Membuat View untuk PDF

 

Dompdf bekerja dengan merender konten HTML menjadi format PDF. Jadi, langkah selanjutnya adalah membuat view Blade yang akan menjadi template laporan PDF Anda.

Buat file baru di resources/views/reports/invoice.blade.php. Anda bisa menggunakan HTML dan CSS penuh di sini.

Contoh resources/views/reports/invoice.blade.php:

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Faktur #{{ $invoiceId }}</title>
    <style>
        body { font-family: 'Helvetica', 'Arial', sans-serif; font-size: 12px; }
        .header { text-align: center; margin-bottom: 20px; }
        .table-items { width: 100%; border-collapse: collapse; }
        .table-items th, .table-items td { border: 1px solid #ccc; padding: 8px; text-align: left; }
        .total { text-align: right; margin-top: 20px; font-size: 14px; font-weight: bold; }
    </style>
</head>
<body>

    <div class="header">
        <h1>Faktur</h1>
        <h3>Invoice #{{ $invoiceId }}</h3>
    </div>

    <p>
        **Kepada:** {{ $customerName }}<br>
        **Tanggal:** {{ $date }}
    </p>

    <table class="table-items">
        <thead>
            <tr>
                <th>Deskripsi</th>
                <th>Harga</th>
                <th>Kuantitas</th>
                <th>Total</th>
            </tr>
        </thead>
        <tbody>
            @foreach($items as $item)
            <tr>
                <td>{{ $item['description'] }}</td>
                <td>Rp {{ number_format($item['price'], 0, ',', '.') }}</td>
                <td>{{ $item['quantity'] }}</td>
                <td>Rp {{ number_format($item['price'] * $item['quantity'], 0, ',', '.') }}</td>
            </tr>
            @endforeach
        </tbody>
    </table>

    <div class="total">
        Total: Rp {{ number_format($total, 0, ',', '.') }}
    </div>

</body>
</html>

Pastikan Anda menggunakan CSS inline atau tag <style> langsung di dalam file HTML. Dompdf tidak mendukung CSS eksternal secara default.


 

3. Membuat Controller dan Route

 

Sekarang, kita akan membuat sebuah controller yang akan mengambil data, memuat view, dan mengubahnya menjadi PDF.

Gunakan perintah Artisan untuk membuat controller baru:

Bash

php artisan make:controller InvoiceController

Kemudian, modifikasi app/Http/Controllers/InvoiceController.php seperti di bawah ini:

PHP

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PDF; // Menggunakan facade PDF dari package

class InvoiceController extends Controller
{
    public function generateInvoice()
    {
        // Contoh data faktur
        $data = [
            'invoiceId' => 'INV-001',
            'customerName' => 'Budi Santoso',
            'date' => date('d-m-Y'),
            'items' => [
                ['description' => 'Layanan Web Hosting', 'price' => 200000, 'quantity' => 1],
                ['description' => 'Domain .com', 'price' => 150000, 'quantity' => 1],
                ['description' => 'Biaya Desain Logo', 'price' => 500000, 'quantity' => 1],
            ]
        ];

        $total = array_sum(array_map(function($item) {
            return $item['price'] * $item['quantity'];
        }, $data['items']));

        // Meneruskan data ke view
        $data['total'] = $total;

        // Memuat view 'reports.invoice' dengan data yang ada
        $pdf = PDF::loadView('reports.invoice', $data);

        // Mengembalikan PDF untuk diunduh (download)
        return $pdf->download('faktur_INV-001.pdf');

        // Atau mengembalikan PDF untuk ditampilkan di browser (stream)
        // return $pdf->stream('faktur_INV-001.pdf');
    }
}

Terakhir, definisikan rute di routes/web.php untuk memicu fungsi ini:

PHP

use App\Http\Controllers\InvoiceController;

Route::get('/generate-invoice', [InvoiceController::class, 'generateInvoice']);

 

4. Menggunakan Dompdf

 

Sekarang, jika Anda mengakses URL /generate-invoice di browser Anda, Laravel akan menjalankan controller InvoiceController, memuat view invoice.blade.php dengan data faktur, merendernya menjadi PDF, dan mengunduhnya secara otomatis ke komputer Anda.

Jika Anda ingin menampilkan PDF langsung di browser, cukup ganti download() dengan stream() di controller. Metode ini berguna untuk pratinjau PDF.


 

Kesimpulan

 

Dengan integrasi yang mulus antara Laravel dan Dompdf, Anda dapat dengan mudah membuat laporan PDF dinamis dari konten HTML yang sudah Anda miliki. Ini adalah solusi yang efisien dan kuat untuk berbagai kebutuhan dokumentasi di aplikasi web Anda.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_m9wyvsm9wyvsm9wy

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek