Image Load

Hello world,

Jumpa lagi pada pembasahan yang berbeda. Kali ini saya akan membahas mengenai plugin dan cara penggunaannya. Sebagai programmer pasti sudah sering ketemu dan menggunakan plugin seperti pada Php, Javascript, Java dan lain-lain. Seberapa penting kita menggunakan plugin? Sederhananya kita bisa menggunakan package atau library yang sudah dibuat oleh orang lain yang tinggal kita masukkan ke dalam aplikasi kita tanpa harus membuatnya dari nol. 

Langsung saja masuk ke plugin pertama dalam pembahasan ini yaitu penggunaan dompdf. Dompdf adalah sebuah third party yang digunakan untuk melakukan convert/export desain html menjadi pdf. Lebih spesifiknya pembahasan kali ini dompdf akan digunakan pada framework php codeigniter versi 3.x. Sedangkan Dompdf yang digunakan adalah versi 0.8.x.

1. Download Dompdf

Langkah pertama yang harus dilakukan sudah pasti adalah mengunduh file dari dompdf. Silakan download di sini

2. Extract Ke Codeigniter

Extrack dompdf.zip ke folder application/third_party/ sehingga susunan foldernya akan menjadi seperti gambar di bawah ini.



3. Membuat Library

Langkah selanjutnya buat sebuah file di folder application/library/ dengan nama PdfGenerator.php dengan code sebagai berikut

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

require_once("./application/third_party/dompdf/autoload.inc.php");
use Dompdf\Dompdf;

class Pdfgenerator {

public function generate($html, $filename='', $stream=TRUE, $paper = 'A4', $orientation = "portrait")
{
$dompdf = new DOMPDF();
$dompdf->loadHtml($html);
$dompdf->setPaper($paper, $orientation);
$dompdf->render();
if ($stream) {
$dompdf->stream($filename.".pdf", array("Attachment" => 0));
} else {
return $dompdf->output();
}
}
}

4. Membuat Controller dan View

Buat sebuah controller yang jika dijalankan akan memanggil library pdfgenerator untuk mencetak pdf.

Controller Report.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Report extends CI_Controller{
public function __construct()
{
parent::__construct();
//Codeigniter : Write Less Do More
}
function index()
{
$this->load->library('pdfgenerator');
$data['users']=array(
array('firstname'=>'I am','lastname'=>'Programmer','email'=>'iam@programmer.com'),
array('firstname'=>'I am','lastname'=>'Designer','email'=>'iam@designer.com'),
array('firstname'=>'I am','lastname'=>'User','email'=>'iam@user.com'),
array('firstname'=>'I am','lastname'=>'Quality Assurance','email'=>'iam@qualityassurance.com')
);
$html = $this->load->view('table_report', $data, true);
$filename = 'report_'.time();
$this->pdfgenerator->generate($html, $filename, true, 'A4', 'portrait');
}
}


View tabel_report.php

<!DOCTYPE html>
<html>
<head>
<title>Report Table</title>
<style type="text/css">
#outtable{
padding: 20px;
border:1px solid #e3e3e3;
width:600px;
border-radius: 5px;
}
.short{
width: 50px;
}
.normal{
width: 150px;
}
table{
border-collapse: collapse;
font-family: arial;
color:#5E5B5C;
}
thead th{
text-align: left;
padding: 10px;
}
tbody td{
border-top: 1px solid #e3e3e3;
padding: 10px;
}
tbody tr:nth-child(even){
background: #F6F5FA;
}
tbody tr:hover{
background: #EAE9F5
}
</style>
</head>
<body>
<!-- In production server. If you choose this, then comment the local server and uncomment this one-->
<!-- <img src="<?php // echo $_SERVER['DOCUMENT_ROOT']."/media/dist/img/no-signal.png"; ?>" alt=""> -->
<!-- In your local server -->
<img src="<?php echo $_SERVER['DOCUMENT_ROOT']."/ci-dompdf8/media/dist/img/no-signal.png"; ?>" alt="">
<div id="outtable">
<table>
<thead>
<tr>
<th class="short">#</th>
<th class="normal">First Name</th>
<th class="normal">Last Name</th>
<th class="normal">Username</th>
</tr>
</thead>
<tbody>
<?php $no=1; ?>
<?php foreach($users as $user): ?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $user['firstname']; ?></td>
<td><?php echo $user['lastname']; ?></td>
<td><?php echo $user['email']; ?></td>
</tr>
<?php $no++; ?>
<?php endforeach; ?>
</tbody>
</table>
</div>
</body>
</html>

Note: jika kita menggunakan versi 0.6 ke bawah biasanya akan sedikit bermasalah saat kita pakai php versi 7.

Selamat mencoba :)