Membuat Laporan PDF dengan FPDF

para masta Yii ane mo nanya,

untuk bikin laporan PDF di Yii pakai FPDF gmn ya?

udah coba pake FPDF, tapi kenapa belum berhasil juga.

Sebelumnya folder ‘fpdf’ sudah sy download dan ane taroh di folder

protected/extensions

Ni codingannya (codingan simple)




<?php

Yii::import('application.extensions.fpdf.*');

require_once("fpdf.php");


$pdf = new FPDF();

$pdf->AddPage();

$pdf->SetFont('Arial','B',16);

$pdf->Cell(40,10,'Hello World !');

$pdf->Output();

?>



malah muncul gini gan

padahal kalao ane pake prosedural biasa(tanpa yii) itu bisa gan, gimana ya solusinya?

Mohon bantuannya… :-[

pake phpexcel aja dy bisa bikin pdf kok

ni link cara pakenya…semoga membantu ^^

http://www.yiiframework.com/wiki/101/how-to-use-phpexcel-external-library-with-yii/

klo ane pake HTML2PDF gan. Tapi karena dari francis, klo ada error pesan errornya pake bahasa francis. Tapi tutirial dan lainnya bahasa ingris kok. cuma pesan error aja yg bahasa francis.

coba ke sini gan http://html2pdf.fr/en

Pahami dulu bahwa Eksekusi Action itu adanya di Controller bukan di View Jadi jangan taroh coding Open FPDF di View.

Step 0. Taroh FPDF di /protected/extensions/

A. Direct Button

Step 1. Taroh Action ini menjadi salah satu action di PostController

public function actionHelloWorld()


{





	&#036;pdf=new FPDF();


	&#036;pdf-&gt;AddPage();


	&#036;pdf-&gt;SetFont('Arial','B',16);


	&#036;pdf-&gt;Cell(40,10,'Hello World&#33;');


	&#036;pdf-&gt;Output();


}

Step 2. Eksekusi Command adalah: http://localhost/blog/post/HelloWorld

B. Dengan CFormModel

Step 1. Taroh di Controller menjadi salah satu Action

public function actionHelloWorld2()


{


	&#036;model=new FAllocation;





	if(isset(&#036;_POST['FAllocation']))


	{


		&#036;model-&gt;attributes=&#036;_POST['FAllocation'];


		if(&#036;model-&gt;validate()) {





		&#036;pdf=new H0F1_report2();


		&#036;pdf-&gt;AliasNbPages();


		&#036;pdf-&gt;AddPage();


		&#036;pdf-&gt;SetFont('Arial','',12);


		


		&#036;pdf-&gt;report2(&#036;model-&gt;begindate,&#036;model-&gt;enddate);				


		&#036;pdf-&gt;Output();


						


		}


	}





	&#036;this-&gt;render('report2',array('model'=&gt;&#036;model));		


}

Step 2. Bikin CFormModel taroh di folder Model

class FAllocation extends CFormModel

{

public &#036;begindate;


public &#036;enddate;





public function rules()


{


	return array(


		//array('begindate, enddate', 'required'),


		array('begindate, enddate', 'type', 'type'=&gt;'date', 'dateFormat'=&gt;'yyyy-MM-dd'),


	);


}





public function attributeLabels()


{


	return array(


		'begindate'=&gt;'Periode Mulai',


		'enddate'=&gt;'Periode Selesai',


	);


}

}

Step 3. Buat View Report 2 untuk menampilkan Form yang kita buat di Step 2. Remember, di kode ini ada CJuiDatePicker, Remove aja kalau nggak mau pake…

<?php

$this->breadcrumbs=array(

'Report Allocation',

);

?>

<h1>My Report2</h1>

<div class="wide form">

<?php $form=$this->beginWidget(‘CActiveForm’, array(

'id'=&gt;'allocation-form',


'enableAjaxValidation'=&gt;false,

)); ?>

&lt;div class=&quot;row&quot;&gt;


	&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'begindate'); ?&gt;


	&lt;?php


		&#036;this-&gt;widget('zii.widgets.jui.CJuiDatePicker', array(


			'model'=&gt;&#036;model,


			'value'=&gt;CTimestamp::formatDate('yyyy-MM-dd',&#036;model-&gt;begindate),


			'attribute'=&gt;'begindate',


			// additional javascript options for the date picker plugin


			'options'=&gt;array(


				'showAnim'=&gt;'fold',


				'dateFormat'=&gt;'yy-mm-dd',


			),


			'htmlOptions'=&gt;array(


				'style'=&gt;'height:20px;'


			),


		));


	?&gt;


	&lt;?php echo &#036;form-&gt;error(&#036;model,'begindate'); ?&gt;


&lt;/div&gt;





&lt;div class=&quot;row&quot;&gt;


	&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'enddate'); ?&gt;


	&lt;?php


		&#036;this-&gt;widget('zii.widgets.jui.CJuiDatePicker', array(


			'model'=&gt;&#036;model,


			'value'=&gt;CTimestamp::formatDate('yyyy-MM-dd',&#036;model-&gt;enddate),


			'attribute'=&gt;'enddate',


			// additional javascript options for the date picker plugin


			'options'=&gt;array(


				'showAnim'=&gt;'fold',


				'dateFormat'=&gt;'yy-mm-dd',


			),


			'htmlOptions'=&gt;array(


				'style'=&gt;'height:20px;'


			),


		));


	?&gt;


	&lt;?php echo &#036;form-&gt;error(&#036;model,'enddate'); ?&gt;


&lt;/div&gt;





&lt;div class=&quot;row submit&quot;&gt;


	&lt;?php echo CHtml::submitButton('Report'); ?&gt;


&lt;/div&gt;

<?php $this->endWidget(); ?>

</div><!-- form -->

Step 4. Ketika Form ini dieksekusi, ingat ada 2 parameter yang di pass ke Action HelloWorld2 di PostController, BeginDate dan EndDate, So Code untuk FPDF adalah

<?php

class H0F1_report2 extends fpdf

{

//Page footer


function Footer()


{


	//Position at 1.5 cm from bottom


	&#036;this-&gt;SetY(-15);


	//Arial italic 8


	&#036;this-&gt;SetFont('Arial','I',<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='8)' />;


	//Page number


	&#036;this-&gt;Cell(0,10,'Print Date: '. SParameter::IndoFormat() . '                        ' . 


	'Page: '.&#036;this-&gt;PageNo().'/{nb}'                                         . '                        ' .


	'Report Code: H0F1/RP2',0,0,'C');			


}


	





function Report2(&#036;id,&#036;ad)  


{


        //Kode Buat FPDF-nya..


}

}

?>

Kalau binun, let’s discuss it later…

Ternyata untuk bikin report PDF dengan Yii itu sangat mudah, ane cari2 alhamdulillah dapet juga (ga sengaja kecemplung di forumnya orang eropa gan… he)

ternyata cukup mudah, ga perlua pake cell-cell segala, cukup html biasa (misal buat tabel)

cukup tr td gan, coba pakai MPDF

Silakan bisa di coba sendiri… Pokonya mantap




<?php


Yii::import('application.extensions.MPDF52.*');

include("mpdf.php");

<style>

table {

	font-family: sans-serif;

	border: 20mm solid aqua;

	border-collapse: collapse;

}

layout {

	border:0.2mm solid;

	background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;

}

</style>

';*/


$html = '

<pageheader name="myHeaderNoNumEven" content-left="" content-center="myHeader1Even" content-right="{DATE j-m-Y}" header-style="font-family:sans-serif; font-size:8pt; color:#000088;" header-style-left="font-weight:bold; " line="on" />


<link rel="stylesheet" type="text/css" href="'.Yii::app()->request->baseUrl.'/css/mpdfstyletables.css" />


<table style="border-collapse: collapse;" width=100%>

<tr><td rowspan=2 width=100px style="border:0.2mm solid;"><img style="vertical-align: top" src="'.Yii::app()->request->baseUrl.'/images/pgn.jpg" width="85px" /></td><td align="center"; style="border:0.2mm solid;">PT PERUSAHAAN GAS NEGARA (Persero) Tbk</td>

</tr>

<tr>

<td align="center"; style="border:0.2mm solid;">FORMULIR NOTULENSI KNOWLEDGE SHARING</td>

</tr>

</table>


<table>

	<tr><td></td></tr>

	<tr><td> Judul </td><td>: '.$judul.'</td></t>

	<tr><td> Waktu & Lokasi </td><td>: '.$lokasi.'</td></tr>

	<tr><td> Narasumber </td><td>: '.$narasumber.'</td></tr>

	<tr><td> Pemimpin </td><td>: '.$pemimpin.'</td></t>

	<tr><td> Fasilitator </td><td>: '.$fasilitator.'</td></t>

	<tr><td> Metode </td><td>: '.$metode.'</td></tr>

	<tr><td> Notulis </td><td>: '.$notulis.'</td></tr>

	<tr><td> Lampiran </td><td>: '.$a.'</td></tr>

<tr><td></td></tr>

<tr><td></td></tr>

<tr><td></td></tr>

<tr><td></td></tr>

<tr><td></td></tr>

</table>

<table  width="100%" style="border-collapse: collapse;"><tr>

<td style="border:0.2mm solid; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">No</td>

<td style="border:0.2mm solid; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">Agenda / Permasalahan</td>

<td style="border:0.2mm solid; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">Analisa / Pembahasan</td>

<td style="border:0.2mm solid; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">Kesepakatan / Tindak Lanjut</td>

<td style="border:0.2mm solid; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">PIC</td>

<td style="border:0.2mm solid; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">Target Waktu</td>

</tr>';

$no=1;

foreach($Notulens as $data){

$html.='

	<tr>

	<td style="border:0.2mm solid;">'.$no.'</td>

	<td style="border:0.2mm solid;">'.$data->agenda.'</td>

	<td style="border:0.2mm solid;">'.$data->analisa.'</td>

	<td style="border:0.2mm solid;">'.$data->kesepakatan.'</td>

	<td style="border:0.2mm solid;">'.$data->pj.'</td>

	<td style="border:0.2mm solid;">'.$data->due_date.'</td>

';

$html.= '</tr>'; $no++;

}

$html .= '</table><br><table align=right><tr><td align=center><p style="font-size:12pt;" >Mengetahui<br>Fasilitator Knowledge Sharing,<br><br>( '.$fasilitator.' )</p></td></tr></table>';

$mpdf=new mPDF('c');

$mpdf->Bookmark('Start of the document');

$mpdf->useOddEven = 1;

$mpdf->AddPage('L','','5','i','on');

//$mpdf->AddPage('L','','','','',50,50,50,50,10,10);

//$stylesheet = file_get_contents('../../mpdfstyletables.css');

//$mpdf->WriteHTML($stylesheet,1);	// The parameter 1 tells that this is css/style only and no body/html/text

//$mpdf->WriteHTML('<div>Section 1 text</div>');

$mpdf->WriteHTML($html,2);

$mpdf->Output();

exit;


?>



hehehe… banyak jalan ke Monas, tapi kayaknya ini nggak Yii-Style banget… anyhow, kalau it’s work, ini yang lebih penting memang. Daripada coding keren2 tapi kagak fungsi…hehehe

Thanks gan udah sharing…

Asli baru tahu ada mPDF …

Thanks atas sharingnya, lagi bikin report juga.

Masalah generate PDF dari PHPExcel, adalah hasil generate yang juga menghasilkan garis-garis dari semua cell; padahal Saya tidak melakukan setting border terhadap cell yang ada.

sekedar berbagi aja gan

kalo mau menggunakan FPDF, nama Class dan nama filenya harus sama

jika nama filenya [size="2"][color="#1c2837"]fpdf maka nama class nya harus fpdf bukan FPDF, oleh karena itu muncul pesan seperti diatas…[/color][/size]

[size="2"][color="#1c2837"]


Failed to load PDF Documen

[/color][/size]

buat nyimpen script itu dimana ya , nah terus manggilnya gimana ?

ringan mana ya tcpdf sama mpdf ?

help dong gan2 skalian… ketulan aq baru kenalan ma yii, paljari woo keren. tp bingung gmn bikin laporan… dah coba pake reportico, eh ngk bagus…

ane pernah gunain Mpdf, tapi untuk landscape page layoutnya ngak fungsi gan, kenapa ya? padahal udah ane set di init pdfnya, ngak mau juga. Ada yang sudah berhasil share donk

mas ada contoh file yang pake fpdf gak ane udah bikin tapi masih eror nih…

ane pke fpdf error gini gan : Sistem tidak bisa menemukan action "pdf" seperti yang diminta. help…