style(tatib): PDF SP per siswa 1 lembar F4 portrait — kop diperbaiki (logo 84px ke kiri, nama sekolah wrap aman), reset margin p, line-height 1.2, tanggal tabel d/m/Y, margin @page 1cm; semua SP (1-6 pelanggaran) terverifikasi 1 halaman

This commit is contained in:
Novy San87
2026-08-26 11:05:19 +07:00
parent 2988aa4988
commit 38400b5cd6
+21 -19
View File
@@ -4,32 +4,34 @@
<meta charset="utf-8"> <meta charset="utf-8">
<title>Cetak SP - {{ $spLetter->student->full_name }}</title> <title>Cetak SP - {{ $spLetter->student->full_name }}</title>
<style> <style>
@page { margin: 1.2cm 1cm 1.2cm; size: 210mm 330mm; } /* F4 — hemat ruang agar muat 1 lembar */ @page { margin: 1cm 1cm 1cm; size: 210mm 330mm; } /* F4 — margin ringkas agar muat 1 lembar */
body { font-family: 'Times New Roman', 'DejaVu Serif', Times, serif; font-size: 12pt; line-height: 1.35; color: #000; } p { margin: 0; }
.kop-surat { margin-bottom: 10px; } body { font-family: 'Times New Roman', 'DejaVu Serif', Times, serif; font-size: 12pt; line-height: 1.2; color: #000; }
.kop-surat { margin-bottom: 4px; }
.kop-table { width: 100%; border-collapse: collapse; margin-bottom: 6px; } .kop-table { width: 100%; border-collapse: collapse; margin-bottom: 6px; }
.kop-table td { border: none; padding: 0; } .kop-table td { border: none; padding: 0; }
.kop-logo { width: 112px; text-align: center; vertical-align: middle; } .kop-logo { width: 84px; text-align: center; vertical-align: middle; }
.kop-logo img { height: 86px; width: auto; max-width: 104px; object-fit: contain; } .kop-logo img { height: 58px; width: auto; max-width: 76px; object-fit: contain; }
.kop-text { text-align: center; vertical-align: middle; } .kop-text { text-align: center; vertical-align: middle; width: 400pt; }
.kop-1, .kop-2 { font-size: 13.5pt; font-weight: bold; margin: 0; text-transform: uppercase; } .kop-1, .kop-2 { font-size: 12pt; font-weight: bold; margin: 0; text-transform: uppercase; }
.kop-3 { font-size: 11.5pt; font-weight: bold; margin: 1px 0; text-transform: uppercase; white-space: nowrap; } .kop-3 { font-size: 9.5pt; font-weight: bold; margin: 1px 0; text-transform: uppercase; }
.kop-4, .kop-5, .kop-6 { font-size: 10.5pt; margin: 0; } .kop-4, .kop-5, .kop-6 { font-size: 9pt; margin: 0; }
.kop-surat .line { border-top: 2.5px solid #000; margin-top: 6px; } .kop-surat .line { border-top: 2.5px solid #000; margin-top: 6px; }
.kop-surat .sub-line { border-top: 1px solid #000; margin-top: 2px; } .kop-surat .sub-line { border-top: 1px solid #000; margin-top: 2px; }
.letter-number { text-align: center; margin: 10px 0; font-weight: bold; font-size: 12pt; } .letter-number { text-align: center; margin: 2px 0; font-weight: bold; font-size: 12pt; }
.letter-number .letter-title { font-size: 13pt; } .letter-number .letter-title { font-size: 13pt; }
.to-title { margin-bottom: 8px; } .to-title { margin-bottom: 2px; }
.body-text { text-align: justify; margin-bottom: 10px; } .body-text { text-align: justify; margin-bottom: 4px; }
.violation-list { margin: 8px 0 8px 20px; } .body-text p { margin-bottom: 4px; }
.violation-list { margin: 4px 0 4px 20px; }
.violation-list li { margin-bottom: 3px; } .violation-list li { margin-bottom: 3px; }
.violation-table { width: 100%; border-collapse: collapse; margin: 8px 0; } .violation-table { width: 100%; border-collapse: collapse; margin: 4px 0; }
.violation-table th, .violation-table td { border: 1px solid #000; padding: 4px 8px; text-align: left; font-size: 12pt; } .violation-table th, .violation-table td { border: 1px solid #000; padding: 2px 6px; text-align: left; font-size: 12pt; }
.violation-table th { font-weight: bold; } .violation-table th { font-weight: bold; }
.violation-table .total-row td { font-weight: bold; } .violation-table .total-row td { font-weight: bold; }
.signature { margin-top: 26px; padding-left: 24em; } .signature { margin-top: 2px; padding-left: 24em; }
.signature .date { text-align: left; margin-bottom: 5px; } .signature .date { text-align: left; margin-bottom: 2px; }
.signature .title { text-align: left; margin-bottom: 30px; } .signature .title { text-align: left; margin-bottom: 10px; }
.signature .name { text-align: left; font-weight: bold; } .signature .name { text-align: left; font-weight: bold; }
.signature .nip { text-align: left; font-size: 12pt; } .signature .nip { text-align: left; font-size: 12pt; }
</style> </style>
@@ -93,7 +95,7 @@
<tbody> <tbody>
@foreach($violations as $v) @foreach($violations as $v)
<tr> <tr>
<td>{{ \Carbon\Carbon::parse($v['violation_date'] ?? now())->setTimezone('Asia/Jakarta')->locale('id')->isoFormat('dddd, DD MMMM Y') }}</td> <td>{{ \Carbon\Carbon::parse($v['violation_date'] ?? now())->setTimezone('Asia/Jakarta')->format('d/m/Y') }}</td>
<td> <td>
{{ \App\Models\Violation::with('violationType')->find($v['id'] ?? null)?->violationType?->name ?? '-' }} {{ \App\Models\Violation::with('violationType')->find($v['id'] ?? null)?->violationType?->name ?? '-' }}
@if (! empty($v['description'])) @if (! empty($v['description']))