Appearance
Facades & Pdf
Facades
Core\Facades\{Config,Crypt,Cookies,DB,Debug,Dispatcher,Event,Flash,Logger, Registry,Request,Response,Security,Session,Url,View,Annotations} — pola statis membungkus service DI (Facade::getFacadeAccessor() menentukan nama service-nya).
Pdf
Core\Pdf\{exFPDF,MctablePdf,McTablePdfOld,McTablePdfOldOvvr,easyTables, easyTablesExcel,formatedStrings} — helper generate laporan PDF berbasis FPDF, diport dari tiga app konsumen (bacameter, info-pelanggan-web, rab) yang tadinya masing-masing punya copy sendiri yang saling divergen. exFPDF adalah hasil union ketiganya: rich-text rendering engine (dipakai semua app), bookmark/outline PDF (tadinya cuma bacameter+rab), dan mini parser HTML-to-PDF (WriteHTML, tadinya cuma rab).
fpdf/fpdf BUKAN dependency package ini (cuma suggest) — app yang mau pakai Core\Pdf\* WAJIB require sendiri:
json
{
"require": {
"fpdf/fpdf": "^1.83"
}
}Pemakaian (pola yang sama seperti sebelumnya, cuma ganti namespace):
php
use Core\Pdf\exFPDF;
class MyReportPdf extends exFPDF
{
function Header()
{
$this->SetFont('Arial', 'B', 14);
$this->Cell(0, 10, 'Nama Perusahaan', 0, 1, 'C');
}
function Footer()
{
$this->SetY(-15);
$this->SetFont('Arial', 'I', 8);
$this->Cell(0, 10, 'Halaman ' . $this->PageNo(), 0, 0, 'C');
}
}
$pdf = new MyReportPdf();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
$pdf->Cell(40, 10, 'Isi laporan...');
$pdf->Output('D', 'laporan.pdf');Letterhead (Header()/Footer(), lebar kolom, dst) tetap jadi tanggung jawab app konsumen, sama seperti sebelumnya — package cuma menyediakan engine-nya. Nama class (exFPDF, easyTables, dst.) sengaja tidak di-PascalCase-kan, lihat AGENTS.md.