Pengantar
Yii adalah salah satu framework di PHP yang extensible. Tulisan ini akan membahas salah satu contoh integrasi 3rd party libraries di Yii dengan menggunakan Zend.
Software yang Diperlukan
Untuk mengikuti tulisan ini, ambil Zend Framework minimal di http://framework.zend.com/download/current/. Untuk tulisan ini, saya menggunakan versi 1.9.5. Ekstrak ZendFramework-1.9.5-minimal.tar.gz berikut:
$ tar -xzvf ZendFramework-1.9.5-minimal.tar.gz
Hasilnya adalah sebagai berikut:
[bpdp@bpdp-arch software]$ cd ZendFramework-1.9.5-minimal/ [bpdp@bpdp-arch ZendFramework-1.9.5-minimal]$ ls -la total 32 drwxr-xr-x 4 bpdp users 4096 2009-10-27 00:19 . drwxr-xr-x 7 bpdp users 4096 2009-10-30 11:19 .. -rw-r--r-- 1 bpdp users 3438 2009-10-26 20:33 INSTALL.txt -rw-r--r-- 1 bpdp users 1547 2009-10-26 20:33 LICENSE.txt -rw-r--r-- 1 bpdp users 6496 2009-10-27 00:19 README.txt drwxr-xr-x 2 bpdp users 4096 2009-10-26 20:39 bin drwxr-xr-x 3 bpdp users 4096 2009-10-26 20:38 library [bpdp@bpdp-arch ZendFramework-1.9.5-minimal]$
Copy semua isi directory Zend di library ke aplikasi Yii yang dibuat, diletakkan pada zax/protected/vendors sehingga menjadi berikut ini (asumsi: aplikasi yang saya buat mempunyai nama zax, mungkin lain dengan milik anda):
[bpdp@bpdp-arch vendors]$ ls -la total 12 drwxr-xr-x 3 root root 4096 2009-10-30 09:56 . drwxr-xr-x 12 root root 4096 2009-10-30 08:49 .. drwxr-xr-x 59 root root 4096 2009-10-30 09:56 Zend [bpdp@bpdp-arch vendors]$
Untuk me-render dalam bentuk stream PDF menggunakan Zend, tidak perlu mengaktifkan layout dan view di Yii. Yang kita perlukan hanyalah controller. Berikut ini adalah contoh untuk membuat controller dengan nama PdfviewController:
[root@bpdp-arch zax]# protected/yiic shell Yii Interactive Tool v1.0 (based on Yii v1.0.10) Please type 'help' for help. Type 'exit' to quit. >> controller pdfview generate PdfviewController.php mkdir /opt/web/httpd/htdocs/zax/protected/views/pdfview generate index.php Controller 'pdfview' has been created in the following file: /opt/web/httpd/htdocs/zax/protected/controllers/PdfviewController.php You may access it in the browser using the following URL: http://hostname/path/to/index.php?r=pdfview >> [root@bpdp-arch zax]#
Setelah itu, pada controller, buatlah program
class PdfviewController extends CController
{
public function actionIndex()
{
// Memastikan bahwa Zend di-include-kan
Yii::import('application.vendors.*');
require_once('Zend/Pdf.php');
// Create stream pdf baru
$pdf1 = new Zend_Pdf();
// definisi halaman
$page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// definisi font
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
// apply font
$page->setFont($font, 36);
// menuliskan text ke page
$page->drawText('Hello from Yii', 72, 720);
// memasukkan page tersebut ke file pdf
$pdf1->pages[] = $page;
// mengambil hasil pdf yang di-generate
$pdfcontents = $pdf1->render();
// me-render ke browser - jangan lupa setting header untuk Content-Type
header('Content-Type: application/pdf');
$this->layout = false;
$this->renderText($pdfcontents);
}
// .... dan seterusnya
Hasilnya (http://server/zax/index.php?r=pdfview) adalah sebagai berikut:
Kemana Setelah Ini?
Setelah mengetahui cara membuat stream PDF yang bisa ditampilkan langsung di browser, silahkan membaca manual dari Zend untuk mengetahui berbagai methods dan properties yang berkaitan dengan pembuatan file PDF. Secara spesifik, silahkan melihat ke Programmer’s Reference Guide, khususnya tentang Zend_Pdf (http://framework.zend.com/manual/en/zend.pdf.html).


Muhammad Rashid Babsail
October 17, 2010
thanks for share sir…
lagi mendalami Yii juga nih pak. btw, saya biasanya pake library odtphp lalu di convert ke pdf pake unoconv, ga pusing di template nya pak…
bpdp
October 17, 2010
thanks infonya mas. bisa saja coba tipsnya. hehehe …
sholeh
April 25, 2011
thx mas infonya…
bpdp
April 25, 2011
Sama-sama mas