🚀 feat(preview-laporan): Optimasi tampilan gambar dengan resize otomatis dan peningkatan DPI PDF

Perubahan pada PreviewLaporanService:
- Menambahkan set_option('dpi', '96') untuk meningkatkan kualitas render PDF

Perubahan pada foto-jaminan blade template:
- Implementasi helper function `resize_image()` untuk resize gambar jaminan
- Mengubah gambar asli menjadi versi yang sudah di-resize (800x400px, quality 25%)
- Mengoptimalkan ukuran file gambar untuk preview laporan
- Menjaga aspect ratio gambar tetap proporsional
- Meningkatkan performa loading gambar di PDF preview

Optimasi ini bertujuan untuk:
- Mengurangi ukuran file PDF hasil preview
- Meningkatkan kecepatan loading gambar
- Menjaga kualitas visual yang tetap baik
- Mengurangi memory usage saat generate PDF
This commit is contained in:
Daeng Deni Mardaeni
2025-12-24 11:15:39 +07:00
parent ceca0aa5e8
commit f402c0831a
2 changed files with 12 additions and 5 deletions

View File

@@ -347,6 +347,7 @@ class PreviewLaporanService
$pdf->setPaper('A4', 'portrait'); $pdf->setPaper('A4', 'portrait');
$pdf->set_option('isHtml5ParserEnabled', true); $pdf->set_option('isHtml5ParserEnabled', true);
$pdf->set_option('isPhpEnabled', true); $pdf->set_option('isPhpEnabled', true);
$pdf->set_option('dpi', '96');
return $pdf; return $pdf;
} }

View File

@@ -154,10 +154,12 @@
? $fallbackPath ? $fallbackPath
: $originalPath; : $originalPath;
$resizedPath = resize_image($pathToUse, 800, 400, 25);
$filePath = $filePath =
$statusLpj == 1 $statusLpj == 1
? storage_path('app/public/' . $pathToUse) ? storage_path('app/public/' . $resizedPath)
: asset('storage/' . $pathToUse); : asset('storage/' . $resizedPath);
$extension = strtolower(pathinfo($pathToUse, PATHINFO_EXTENSION)); $extension = strtolower(pathinfo($pathToUse, PATHINFO_EXTENSION));
$isImage = in_array($extension, [ $isImage = in_array($extension, [
@@ -248,12 +250,16 @@
style="align-content: center; text-align: center; margin-bottom: 20px"> style="align-content: center; text-align: center; margin-bottom: 20px">
@foreach ($chunkedPhotos as $item) @foreach ($chunkedPhotos as $item)
@php @php
$originalPath = $item['path'];
$resizedPath = resize_image($originalPath, 800, 400, 25);
$filePath = $filePath =
$statusLpj == 1 $statusLpj == 1
? storage_path('app/public/' . $item['path']) ? storage_path('app/public/' . $resizedPath)
: asset('storage/' . $item['path']); : asset('storage/' . $resizedPath);
$extension = strtolower(pathinfo($item['path'], PATHINFO_EXTENSION)); $extension = strtolower(pathinfo($originalPath, PATHINFO_EXTENSION));
$isImage = in_array($extension, [ $isImage = in_array($extension, [
'jpg', 'jpg',
'jpeg', 'jpeg',