Sebelum melakukan langkah-langkah export PDF di Laravel, pembaca diharapkan sudah:
Export PDF adalah proses mengubah data dari sistem (biasanya berbentuk tabel atau laporan) menjadi sebuah file PDF. Format PDF banyak digunakan karena memiliki beberapa keunggulan:
Secara bawaan (default), Laravel tidak menyediakan fitur untuk mengekspor data ke PDF. Oleh karena itu, kita perlu menggunakan package tambahan dari pihak ketiga. Beberapa package populer:
Dalam praktikum ini, kita menggunakan barryvdh/laravel-dompdf karena proses instalasinya mudah, ringan, cepat, dan cocok untuk laporan sederhana.
Pastikan sudah memiliki halaman untuk menampilkan data.
Simpan file tampilan di resources/views/products
(folder products bisa disesuaikan dengan projeknya).
Jalankan perintah berikut di terminal:
composer require barryvdh/laravel-dompdf
Tunggu sampai proses instalasi selesai. Setelah selesai, cek di composer.json untuk memastikan package sudah terinstall.
Misalnya, di projek ini terinstall dompdf versi 3.1.
Tambahkan route baru di dalam file routes/web.php untuk mengarahkan proses export PDF. Route ini berfungsi sebagai pemicu agar sistem dapat memanggil fungsi exportPdf() pada ProductController.
Route::get('/products/pdf', [ProductController::class, 'exportPdf'])->name('products.pdf');
Tambahkan method berikut pada controller yang digunakan. Disini saya menggunakan ProductController.php.
use Barryvdh\DomPDF\Facade\Pdf;
public function exportPdf()
{
$products = Product::all();
$pdf = Pdf::loadView('products.pdf', compact('products'));
return $pdf->download('listproducts.pdf');
}
Kode ini mengambil seluruh data dari tabel products menggunakan model Product. setelah itu, data yang sudah diambil dimasukkan ke dalam view products/pdf.blade.php. View ini berisi template tampilan data produk yang akan dikonversi menjadi file pdf.
Buat file resources/views/products/pdf.blade.php. File ini digunakan sebagai template tampilan data produk yang nantinya akan dikonversi menjadi PDF. Struktur tabel berisi informasi seperti nama produk, harga, dan deskripsi. Contoh tampilan pdf:
<!DOCTYPE html>
<html>
<head>
<title>Daftar Produk</title>
<style>
body { font-family: sans-serif; }
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th, td {
border: 1px solid #333;
padding: 8px;
text-align: left;
}
th {
background: #ddd;
}
</style>
</head>
<body>
<h2 style="text-align:center;">Daftar Produk</h2>
<table>
<thead>
<tr>
<th>Nama</th>
<th>Harga</th>
<th>Deskripsi</th>
</tr>
</thead>
<tbody>
@foreach($products as $p)
<tr>
<td>{{ $p->name }}</td>
<td>Rp {{ number_format($p->price, 0, ',', '.') }}</td>
<td>{{ $p->description }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
Pada halaman utama resources/views/products/index.blade.php, tambahkan tombol Export PDF. Tombol ini berfungsi sebagai link untuk memanggil route products.pdf. Jika tombol diklik, maka proses export PDF akan dijalankan dan file hasilnya akan langsung diunduh.
Jalankan aplikasi dengan php artisan serve, lalu klik tombol export pdf. Jika berhasil, sistem akan mengunduh file PDF dengan nama daftar_produk.pdf berisi seluruh data produk dari database.