Minggu, 21 April 2013

4/21/2013
7
Kali ini saya akan menjelaskan cara mengintegrasikan DOMPDF dengan Yii Framework. Memangnya kenapa jika menggunakannya secara langsung ? jawabannya Tidak Bisa!, ini disebabkan karena Auto Register Yii bentrok dengan DOMPDF. Terus cara yang benar seperti apa ? baiklah saya akan langsung menjelaskannya.

Pertama download dompdf dan kemudian copy semua filenya ke folder extensions/yiidompdf/. jika Anda menggunakan dompdf versi 0.5.x maka buka config dompdf_config.inc.php dan ubah bagian berikut

function DOMPDF_autoload($class) {
  $filename = mb_strtolower($class) . ".cls.php";
  require_once(DOMPDF_INC_DIR . "/$filename");
}

// menjadi seperti ini

function DOMPDF_autoload($class) 
{
    $filename = mb_strtolower($class) . ".cls.php";
    if(file_exists(DOMPDF_INC_DIR . "/$filename")) {
        require_once(DOMPDF_INC_DIR . "/$filename");
    }
}

kemudian buat sebuat class yang di turunkan dari CApplicationComponent dan isi seperti berikut.

<?php

/**
 * Yii DOMPDF
 * ---------------------------------------------
 *
 * @author         dida nurwanda (dida_n@ymail.com)
 * @blog        didanurwanda.blogspot.com
 */

require_once dirname(__FILE__).'/dompdf_config.inc.php';
Yii::registerAutoloader('DOMPDF_autoload');

class yiidompdf extends CApplicationComponent
{
    public $dompdf;
    
    public function init()
    {
        if($this->dompdf===null)
            $this->dompdf= new DOMPDF();
        return $this->dompdf;
    }
    
    public function generate($file, $filename='', $download=false) 
    {
        $this->dompdf->load_html($file);
        $this->dompdf->render();
        $this->dompdf->stream($filename,array('Attachment'=>$download));
    }
}


kemudian simpan sejajar di dalam extension/yiidompdf/yiidompdf.php
Untuk cara penggunaannya silahkan Anda buka config/main.php dan tambahkan script berikut

return array(
    ...
    'components'=>array(
        ...
        'dompdf'=>array(
            'class'=>'ext.yiidompdf.yiidompdf'
        ),
        ...
    ),
);

dan pada untuk membuat pdfnya seperti contoh berikut

public function actionReport()
{
    $pdf=Yii::app()->dompdf;
    $pdf->dompdf->set_paper('a5');
    $pdf->generate('<h1>Dida Nurwanda</h1>','dida.pdf',false);
}

atau dengan seperti ini

public function actionReport()
{
    $pdf=Yii::app()->dompdf;
    $pdf->dompdf->set_paper('a5');
    $pdf->generate($this->renderPartial('_report',array(),true,true),'dida.pdf',false);
}

Berikut Penampakannya 

Download
Password: didanurwanda.blogspot.com

7 komentar:

  1. gan untuk nampilin di viewnya gimana ya??

    BalasHapus
  2. ada peringatan undefined model gan.trus ane ganti begini :
    public function actionPDF()
    {
    $model=new Naskah('search');

    $pdf=Yii::app()->dompdf;
    $pdf->dompdf->set_paper('a5');
    $pdf->generate($this->render('admin',array(
    'model'=>$model,),true,true),'laporan.pdf',false);
    }

    muncul lagi peringatan lain.katanya " Function set_magic_quotes_runtime() is deprecated "..kenapa ya gan? bantuin gan ane nuwbie

    BalasHapus
    Balasan
    1. teteep...bagaimana solusinya ya gan?

      Hapus
    2. oya, coba buka file class.pdf.php dengan Notepad ++ pada folder yiidompdf/lib. kemudian tekan tombol 'CTRL' (sebelak kanan) sama 'H' secara bersamaan. nanti ada dialog muncul.

      pada Find What isi seperti ini "set_magic_quotes_runtime" (tanpa tanda kutip)
      pada Replace with isi seperti ini "// set_magic_quotes_runtime" (tanpa tanda kutip juga)

      Hapus
  3. gan kok klo nampilin image di pdfnya jd tanda [X]

    BalasHapus

Mohon tidak mencantumkan URL pada komentar yang bersifat promosi.