Cara Membuat Laporan PDF dengan CodeIgniter

Ditulis Oleh:

Kelasprogrammer.com – Membuat laporan PDF di CodeIgniter dapat kita buat dengan bantuan library fpdf. Library ini sudah cukup populer dan banyak digunakan. Banyak keunggulan yang dimiliki, diantaranya kita dapat mengatur ukuran kertas, jenis font, cell, insert gambar, tabel, header dan footer dan lainnya.

Library fpdf bersifat open source, jadi kita dapat menggunakannya secara gratis. Kalian bisa download klik disini. Sampai artikel ini dibuat versi terkahirnya berada pada versi v1.81 (20/12/2015) memang sudah cukup lama ya tidak mengalami pembaharuan versi, namun bagi saya versi terakhir ini masih mempuni untuk kita gunakan di codeigniter.

Pada tutorial sebelumnya sudah saya share mengenai laporan pdf dengan library fpdf ini namun masih menggunakan PHP Native. Kalian bisa lihat pada artikel berikut:

Kalian bisa lihat pada artikel diatas bagaimana cara mendownload dari situs remisnya

Extract Hasil Download FPDF

Setelah kalian mendownload library fpdf, extract kedalam folder project codeigniter kalian didalam folder application/third_party

Konfigurasi Database

Kita buat sebuah database dengan nama penjualan

create database penjualan;

Buat sebuah tabel dengan nama barang

create table barang (
id_barang int not null auto_increment primary key,
nama_barang varchar(20) not null,
harga int,
stok int
);

Kemudian insert beberapa contoh data berikut ini:

INSERT INTO barang(nama_barang,harga,stok)
VALUES ('Sepatu',250000,10),
       ('Tas',175000,20),
       ('Topi',45000,30),
       ('Kaos',88000,10),
       ('Celana',96000,40),
       ('Meja',350000,20),
       ('Kursi',250000,20),
       ('Lemari',45000,50),
       ('Kaos Kaki',23000,10),
       ('Buku',17000,30),
       ('Kaca Mata',85000,10),
       ('Jam Tangan',175000,20),
       ('Sendal',23500,20),
       ('Kemeja',125000,23);

Buat Sebuah Library

Selanjutnya kita buat sebuah library dengan nama cetak_pdf.php isi dari file tersebut sebagai berikut:

<?php
class cetak_pdf {

    function __construct() {
        include_once APPPATH . '/third_party/fpdf/fpdf.php';
    }
}
?>

Library ini berfungsi untuk menyertakan file fpdf.php yang telah kita download dan simpan didalam folder third_party sebelumnya.

Buat Controller

Selanjutnya kita buat controller disini saya membuat controller dengan nama Barang

Baca juga: Pengertian CodeIgniter

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Barang extends CI_Controller {

    function __construct(){
        parent::__construct();
        $this->load->library('cetak_pdf');
    }

	function index()
	{
        $pdf = new FPDF('P', 'mm','Letter');

        $pdf->AddPage();

        $pdf->SetFont('Arial','B',16);
        $pdf->Cell(0,7,'DAFTAR BARANG',0,1,'C');
        $pdf->Cell(10,7,'',0,1);

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

        $pdf->Cell(8,6,'No',1,0,'C');
        $pdf->Cell(100,6,'Nama Barang',1,0,'C');
        $pdf->Cell(35,6,'Harga',1,0,'C');
        $pdf->Cell(15,6,'Stok',1,1,'C');

        $pdf->SetFont('Arial','',10);
        $barang = $this->db->get('barang')->result();
        $no=0;
        foreach ($barang as $data){
            $pdf->Cell(8,6,$no,1,0);
            $pdf->Cell(100,6,$data->nama_barang,1,0);
            $pdf->Cell(35,6,"Rp ".number_format($data->harga, 0, ".", "."),1,0);
            $pdf->Cell(15,6,$data->stok,1,1);
            $no++;
        }
        $pdf->Output();
	}
}

Penjelasan:

$pdf = new FPDF('P', 'mm','Letter');

Sintak diatas merupakan sintak untuk inisialisasi objek dari class fpdf dengan membawa 3 parameter yaitu ‘P’, ‘mm’ dan ‘Letter’ ketiga parameter tersebut mempunyai fungsi:

  • P untuk menentukan orientasi pengaturan halaman yang digunakan adalah jenis potrait atau tegak lurus. Sedangkan bia ingin menggunakan posisi landspace bisa gunakan huruf ‘L’.
  • mm merupakan satuan yang dipakai untuk mengatur panjang halaman
  • Letter merupakan ukuran format kertas yang digunakan.
$pdf->AddPage();

Sintak diatas berfungsi untuk membuat halaman baru pada class fpdf yang kita buat.

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

Fungsi sintak diatas adalah untuk pengaturan huruf dengan menggunakan fungsi SetFont() dengan membawa 3 parameter, parameter yang pertama adalah untuk menentukan jenis huruf yang digunakan yaitu Arial. Parameter yang kedua adalah untuk membuat style Bold dan parameter yang ketiga dengan nilai ’16’ untuk membuat ukuran font nya sebesar 16 point.

     $pdf->Cell(0,7,'DAFTAR BARANG',0,1,'C');

Perhatikan sintak diatas:

  • 0 adalah nilai dari lebar yang digunakan. dengan nilai 0 artinya bahwa kita tidak mengatur lebar cell tersebut.
  • 7 nilai tersebut menandakan tinggi cell.
  • ”CONTOH DAFTAR MAHASISWA’ merupakan kalimat yang akan dicetak didalam cell tersebut.
  • 0 Merupakan nilai untuk pembuatan border cell. dengan mengguakan 0 artinya bahwa border tidak digunakan. Sementara jika ingin menggunakan border masukan nilai 1.
  • 1 Menujukan kemana posisi akan berpindah setelah pembuatan cell selesai 1 menujukan perpindahan posisi pada awal baris berikutnya. Jika tidak ingin berpindah baris gunakan nilai 0.
  • ‘C’ Merupakan jenis untuk perataan teks didalam cell. ‘C’ digunakan untuk rata tengah. Sementara’ L’ digunakan untuk rata kiri dan ‘R’ untuk rata kanan.
 $pdf->Cell(8,6,'No',1,0,'C');
 $pdf->Cell(100,6,'Nama Barang',1,0,'C');
 $pdf->Cell(35,6,'Harga',1,0,'C');
 $pdf->Cell(15,6,'Stok',1,1,'C');

Sintak diatas berfungsi untuk membuat kolom untuk header tabel barang. Kalo diperhatikan terdapat 6 nilai parameter yang digunakan diatas, nilai yang pertama untuk membuat ukuran lebar cell kalo diperhatikan angka nya berbeda beda untuk cell no di set 8 sementara untuk nama barang di set 100 untuk cell harga diset 35 dan untuk cell stok di set 15. Sedangkan untuk nilai yang kedua adalah untuk mengatur tinggi cell, semua saya set tinggi yang sama yaitu 6. pada nilai yang ketiga untuk string untuk mencetak teks, kemudian nilai yang keempat untuk penggunaan border nilai 1 untuk menggunakan border sementara 0 untuk tidak. Nilai yang kelima untuk menentukan perpindahan baris pada cell. 0 untuk berada di cell yang sama (tidak pindah) sementara 1 untuk pindah baris. Sedangkan untuk nilai C untuk pindah ke awal baris.

$barang = $this->db->get('barang')->result();
$no=0;
foreach ($barang as $data){
     $pdf->Cell(8,6,$no,1,0);
     $pdf->Cell(100,6,$data->nama_barang,1,0);
     $pdf->Cell(35,6,"Rp ".number_format($data->harga, 0, ".", "."),1,0);
     $pdf->Cell(15,6,$data->stok,1,1);
     $no++;
}

Selanjutnya, pada sintak diatas kita mengambil data barang dari tabel barang pada database penjualan. Denga menggunakan perintah actice record get() dan disimpan dalam bentuk larik/array yang kemudian kita tampilkan datanya menggunakan perulangan foreach.

Artikel Lainnya : Contoh Array 2 dimensi

$pdf->Output();

Sintak diatas merupakan sintak yang berfungsi untuk menampilkan dokumen PDF yang kita buat dapat ditampilkan di browser.

Bila kalian mengikuti langkah-langkah diatas dengan benar maka akan menghasilkan keluran (output) seperti pada gambar berikut:

laporan PDF dengan codeigniter

Demikian tutorial tentang cara membuat laporan PDF di CodeIgniter. Semoga apa yang saya share bisa bermanfaat buat teman-teman sekalian, Saran saya kalian perlu membaca panduan (user guide) yang disedikan di situs tesmi fpdf.org dan telah di terjemahkan oleh Kang Oedin dengan versi 1.6

Melalui panduan tersebut kalian bisa belajar lebih banyak lagi mengenai pengaturan-pengaturan yang ada pada library fpdf ini.