Skip to content

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.