Używanie zewnętrznych klas/bibliotek w CakePHP

Pokażę jak w CakePHP korzystać z zewnętrznych bibliotek. W przykładzie wykorzystam bibliotekę TCPDF służącą do generowania dokumentów pdf. Pobieramy bibliotekę i rozpakowujemy ją do katalogu app/Vendor. Właśnie w tym katalogu powinno się trzymać wszystkie zewnętrzne skrypty. Jeśli wypakowaliśmy bibliotekę prawidłowo powinniśmy mieć następującą ścieżkę do pliku tcpdf.php app/Vendor/tcpdf/tcpdf.php. Następnie w katalogu app/Vendor stwórz nowy plik np. o nazwie mypdf.php o następującej zawartości.

App::import('Vendor','tcpdf/tcpdf');

class MYPDF extends TCPDF {
    //Page header
    public function Header() {
        if ($this->page != 1) {
            // Logo
            $image_file = dirname(__FILE__) . '/../webroot/img/pdf_top.jpg';
            $this->Image($image_file, 0, 0, 210, 30, '', '', '', false, 300, '', false, false, 0);
            // Set font
            $this->SetFont('helvetica', 'B', 15);
            $this->SetDrawColor(153, 209, 170);
        }
    }

    // Page footer
    public function Footer() {
        
    }
}
Jest to rozszerzenie klasy TCPDF. Przeciążamy np. metodę Header - dodajemy logo, określamy czcionkę itd. Nie omawiam tutaj szczegółów biblioteki TCPDF. Jeśli chcesz dowiedzieć się więcej o tworzeniu dokumentów pdf w TCPDF odsyłam do dokumentacji http://www.tcpdf.org/docs.php. Następnie stwórzmy akcję generate_pdf() w kontrolerze, w którym chcemy generować pdf. Akcja może wyglądać na przykład tak.
public function generate_pdf() {
	App::import('Vendor', 'mypdf');
	
	$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

	$pdf->SetCreator(PDF_CREATOR);
	$pdf->SetAuthor('Imie i nazwisko');
	$pdf->SetTitle('Tytul');
	$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
	$pdf->SetAutoPageBreak(false, 0);
	$pdf->AddPage('P', '', false, false);
	$pdf->writeHTMLCell(0, 0, '', 65, 'Lorem Ipsum', 0, 1, 0, true, 'C', true);
	$pdf->writeHTMLCell(0, 0, '', 73, 'Dolor', 0, 1, 0, true, 'C', true);  
	$pdf->writeHTMLCell(0, 0, '', 81, 'Example text', 0, 1, 0, true, 'C', true);
	
	$pdf->Output('plik.pdf', 'D');
}
Importujemy najpierw stworzony przez nas plik mypdf.php. W treści akcji generujemy przykładowy dokument pdf. Opcja 'D' w metodzie Output oznacza aby zapisywać plik na dysk. W celu wygenerowania/pobrania pliku w przeglądarce wywołujemy url do naszej akcji tzn. nazwa_kontrolera/generate_pdf/ np. items/generate_pdf/.