Generowanie dokumentów PDF, to podstawowa funkcjonalność w przypadku aplikacji typowo biznesowy. Generowanie zestawień czy faktur w formie do druku to idealne zastosowanie dla PDF. Aby projekt powstał jak najszybciej oczywiście korzystam z gotowych narzędzi podstawą jest Kohana Framework w wersji 3.3 oraz moduł przystosowujący bibliotekę mPDF do Kohana PHP https://github.com/smgladkovskiy/kohana-mpdf
Dodatkowy moduł Kohana
Zakładając, że pracujesz z systemem zarządzania wersją GIT, instalacja modułu sprowadza się do sklonowania repo do katalogu /modules
Aby to wykonać w cygwin lub konsoli w systemie linux wpisz:
cd modules git clone git://github.com/smgladkovskiy/kohana-mpdf.git mpdf
Jeżeli pracujesz bez żadnego systemu zarządzania wersją. Utwórz w katalogu modules folder mpdf, a skopiuj tam zawartość repo.
Biblioteka mPDF
To jeszcze nie koniec instalacji moduł, potrzebujemy jeszcze najnowszej wersji klasy mPDF. Ściągnij ze strony http://www.mpdf1.com/mpdf/index.php najnowszą wersję klasy i całą zawartość umieść w folderze /modules/mpdf/vendor
Pokaż Kohanie nowy moduł
Aby korzystać z nowych możliwości wystarczy już jedynie dopisać w bootstrap jedną linię kodu
Kohana::modules(array( ... 'mpdf' => MODPATH.'mpdf', // Class to generation PDF from HTML ... ));
Akcja w kontrolerze
Mój kontroler odpowiada za obsługę drużyny zgłoszonej do konkursu jedną z funkcjonalności jest generowanie karty zgłoszeniowe w formacie PDF. Przykładowy kontroler wygląda tak:
<?php public function action_pdf(){ $this->auto_render=FALSE; $this->response->headers('Content-Type', 'application/pdf'); $pdf = View_MPDF::factory('karta_zgloszeniowa'); // Argumentem metody jest nazwa pliku php z folderu /Application/View/ $pdf->data = ORM::factory('team', $this->request->param('id')); //Przekazujemy do widoku informacje o zespole z bazy danych $pdf->members = ORM::factory('teams_member', $pdf->data->id)->find_all(); // Przekazujemy informacje o członkach teamu $pdf->inline($pdf->data->name); //Argumentem metody jest nazwa pliku PDF, którego będziemy generować } ?>

Software Developer | .NET and Angular enthusiast | 3D Printing fanatic