Program Laporan Kehadiran FPDF Library Support (Studi Kasus Aplikasi Kehadiran Pegawai Udinus) Lalang Erawan Abstrak : Membuat suatu laporan yang bermanfaat dan mudah dibuat memerlukan kerja ekstra dari para pengembang aplikasi. Bagi para pengembang aplikasi web, terdapat banyak sekali software bantu yang dapat digunakan untuk memudahkan pengembangan program laporan dari suatu aplikasi. Salah satu software bantu pengembangan program laporan yang mudah digunakan dan memiliki banyak fasilitas yang memudahkan proses pembuatan program laporan adalah pustaka FPDF. Pustaka FPDF tersedia secara gratis di internet sehingga dari segi biaya tidak akan memberatkan anggaran pembuatan suatu aplikasi. Selain itu, pustaka FPDF dibuat dengan bahasa script PHP sehingga tidak memerlukan waktu lama untuk mempelajarinya. Perintahperintah pustaka FPDF didefinisikan dalam file utama fpdf.php dalam bentuk metode-metode dari kelas FPDF. Kelebihan lain dari pustaka ini adalah tersedianya dokumentasi yang lengkap dan dapat langsung dipelajari karena sudah include dalam paket pustaka ini. Pustaka FPDF menghasilkan laporan dengan format PDF. Laporan yang dikembangkan adalah laporan daftar hadir pegawai Universitas Dian Nuswantoro. Data sumber berformat dbase sehingga dilakukan proses konversi terlebih dahulu menggunakan pustaka fungsi dbase dari PHP. Setelah data sumber dikonversi, proses pembuatan laporan dengan format PDF dilakukan menggunakan fungsi-fungsi kelas FPDF dan kelas turunannya, PDF, yang dibuat penulis sendiri. Hasil Laporan dapat dicetak dengan beberapa pilihan tujuan : string, file lokal, atau ke layar browser. Khusus tujuan terakhir, browser memerlukan plugin tambahan agar dapat menampilkan format PDF, dan syarat ini tidak menimbulkan masalah karena hampir semua browser saat ini dapat menampilkan halaman yang berformat PDF. Kata kunci : FPDF, program laporan, laporan PDF, laporan PHP
PENDAHULUAN Suatu sistem pengelolaan data berbasis komputer tidak akan bermanfaat jika tidak dapat menghasilkan laporan informasi yang dibutuhkan oleh user. Informasi dari suatu sistem informasi komputer semestinya dapat dihasilkan dengan cara yang mudah dan cepat pada saat dibutuhkan, serta berisi informasi yang relevan dan terkini.
Lalang Erawan adalah Dosen Fakultas Ilmu Komputer UDINUS Semarang 53
54
Techno.Com, Vol. 7 No. 2, Mei 2007
Tidak mudah untuk membuat sistem menghasilkan laporan informasi yang sesuai dengan kriteria-kriteria yang diharapkan. Diperlukan suatu usaha yang tidak sedikit agar laporan benar-benar bermanfaat bagi pihak-pihak yang membutuhkan. Salah satu usaha yang dapat dilakukan adalah dengan memanfaatkan software bantu yang tersedia cukup banyak di internet, baik yang gratis maupun berbayar. Di dunia pemrograman berbasis web, para programmer web sangat diuntungkan karena software-software yang tersedia untuk mengembangkan sistem manajemen informasi berbasis web banyak yang gratis. Software-software tersebut dapat digolongkan sebagai software utama pengembangan aplikasi web, seperti PHP, MySQL, Apache, PHPMyAdmin dan sebagainya, maupun software-software bantu. Khusus jenis terakhir, mempunyai sisi kegunaan yang sangat beragam. Salah satu kegunaan software bantu adalah untuk mengembangkan program laporan yang dibutuhkan oleh para pengembang aplikasi web. Dalam kelompok software bantu ini, terdapat beberapa pilihan, antara lain Jasper Report yang berbasis java, PHP Report Maker, dan FPDF. Penulis memilih FPDF sebagai software bantu pengembangan laporan karena beberapa hal, diantaranya : 1. Frekuensi penggunaannya dalam pengembangan program laporan cukup tinggi 2. Perintah-perintahnya relatif sederhana sehingga mudah untuk dipelajari 3. Penerapannya relatif mudah karena tersedia dokumentasi yang cukup lengkap dan tidak memerlukan dukungan software lain lagi. 4. Dibuat menggunakan script PHP sehingga perintah-perintahnya sangat akrab bagi para pengembang aplikasi web
PEMBAHASAN Pustaka FPDF Software bantu FPDF merupakan pustaka (library) yang dibuat oleh Oliver Plathey untuk membuat dokumen PDF melalui pemrograman PHP dengan mudah, lengkap dengan pengaturan header, footer, gambar, dan penomoran halaman. Pustaka FPDF berbentuk open source sehingga source code pustaka ini dapat dibuka dan dipelajari, bahkan jika diinginkan dapat dimodifikasi sesuai kebutuhan. Pustaka ini dapat diperoleh di internet melalui alamat http://www.fpdf.org. Saat artikel ini dibuat, versi pustaka FPDF sudah sampai pada versi 1.6. Jika akan menggunakan pustaka FPDF yang harus dilakukan pertama kali adalah meletakkan direktori fpdf yang diperoleh dari internet dalam direktori aplikasi web yang sedang dikembangkan. Jika direktori aplikasi web misalnya bernama absensi dan web server yang digunakan adalah WAMP (Windows Apache MySQL PHP) yang diinstall di drive C, maka letak dari direktori fpdf adalah di C:\wamp\www\absensi\fpdf. Paket pustaka FPDF terdiri dari beberapa direktori dan beberapa program PHP, CSS, dan HTML. Beberapa direktori dan file penting pustaka ini sebagai berikut : 1. Direktori doc Direktori ini berisi file-file berjenis HTML yang berisi dokumentasi perintah-perintah dalam FPDF. Sebagai contoh, file dokumentasi tentang perintah open yang jika ditampilkan pada browser akan tampak sebagai berikut :
Program Laporan Kehadiran (Erawan)
55
Gambar 1 Tampilan file dokumentasi AddPage.htm 2. Direktori tutorial Direktori ini berisi file-file tutorial penggunaan pustaka FPDF. Salah satu file bernama index.html merupakan file utama untuk menampilkan file-file tutorial lainnya dengan tampilan pada browser sebagai berikut :
Gambar 2 Tampilan file utama tutorial index.htm
Techno.Com, Vol. 7 No. 2, Mei 2007
56
3. Direktori font Direktori ini berisi file-file PHP yang mendefinisikan berbagai tipe font yang dapat digunakan dalam laporan yang dikembangkan. Dalam setiap file program yang dikembangkan, informasi tentang letak direktori ini ditetapkan sebagai konstanta bernama FPDF_FONTPATH. 4. File fpdf File ini merupakan file utama pustaka FPDF berisi fungsi-fungsi yang mendefinisikan perintah-perintah dalam pustaka FPDF seperti Open, AddPage, SetMargins, Close, dan sebagainya. Setiap program aplikasi yang dibuat akan berisi satu baris perintah yang memanggil file ini dengan perintah require.
Metode-metode Dalam Pustaka FPDF Perintah-perintah pustaka FPDF diidefinisikan oleh metode-metode kelas PDF yang berada pada file utama fpdf.php. Metode-metode ini diperlukan dalam program. File ini akan dipanggil pada setiap program yang menggunakan pustaka FPDF. Metode-metode tersebut adalah sebagai berikut : 1. Open Metode ini akan membangkitkan dokumen PDF. Penggunaan metode ini bersifat opsional sebab metode AddPage secara otomatis akan melakukan tugas ini. Metode ini tanpa parameter. 2. AddPage Metode ini akan membuat sebuah halaman baru dalam dokumen. Posisi pojok kiri atas halaman diset berdasarkan ukuran margin kiri atas saat ini. Jika metode Footer dan Header sudah didefinisikan, metodemetode ini akan dipanggil ketika halaman baru sudah terbentuk. Sintaks metode : AddPage([string orientation]) Parameter orientation mengatur orientasi halaman dengan nilai P jika orientasi halaman akan diatur berorientasi portrait atau L jika landscape. Nilai default parameter ini berdasarkan nilai orientasi yang ditentukan oleh konstruktor. 3. FPDF Merupakan kelas konstruktor. Dalam kelas ini, dapat diatur format, orientasi, dan satuan ukuran yang digunakan dalam seluruh metode (kecuali ukuran font). Sintaks konstruktor ini : FPDF([string orientation [, string unit [, mixed format]]]) Parameter : orientation
:
menentukan tipe orientasi halaman, dapat bernilai P (portrait) atau L (landscape). Nilai default P.
unit
:
satuan ukuran user, dapat bernilai pt (point), mm (milimeter), cm (centimeter), in (inch). Point sama dengan 1/72 inch, sekitar 0.35 mm (satu inch sama dengan 2.54 cm). Nilai defaultnya mm
Program Laporan Kehadiran (Erawan)
format
:
57
format halaman, dapat bernilai A3, A4, A5, Letter, Legal. Dapat juga diatur sendiri dalam parameter unit berbentuk array dua elemen, masing-masing mengatur nilai width dan height
4. SetFont Menentukan font yang digunakan untuk mencetak. Metode ini harus digunakan paling tidak sekali sebelum mencetak atau hasil cetakan tidak akan valid. Jenis font dapat berupa font standar atau jenis font yang ditambahkan melalui metode AddFont. Font standar menggunakan Windows encoding cp 1252 (Western Europe). Metode ini dapat diberikan sebelum halaman pertama diciptakan. Jika akan mengubah ukuran font, gunakan metode SetFontSize. Dalam hal penggunaan font, perlu diketahui bahwa file-file metrik font harus dapat diakses. Ada 3 kemungkinan untuk hal ini : File-file tersebut berada di dalam direktori saat ini. File-file tersebut berada di dalam salah satu direktori yang didefinisikan oleh parameter include_path. File-file tersebut berada di dalam direktori yang didefinisikan oleh konstanta FPDF_FONTPATH Sintaks metode ini : SetFont(string family [, string style [, float size]]) Parameter : family
style
size
:
:
:
jenis font yang akan digunakan dapat berupa font standar atau font yang didefinisikan oleh AddFont. Misalnya :
Courier (fixed-width)
Helvetiva atau arial
Times (serif)
Symbol (symbolic)
ZapfDingbats (symbolic)
jenis font dapat bernilai :
empty string : regular
B : bold
I : italic
U : underline
ukuran font, jika tidak ditentukan maka bernilai 12
Techno.Com, Vol. 7 No. 2, Mei 2007
58
5. Cell Mencetak suatu sel (area berbentuk empat persegi panjang) dengan opsional border, warna background, dan string karakter. Sisi kiri atas sel sesuai dengan posisi saat ini. Teks dapat diatur perataannya. Setelah pemanggilan metode ini, posisi saat ini akan berada pada sisi kanan teks atau baris selanjutnya. Sintaks metode ini : Cell(float w[, float h[, string txt[, mixed border[, int ln[, string align[, int fill[, mixed link]]]]]]]) Parameter : w
:
lebar sel, jika bernilai 0, maka sel akan panjang sel sampai batas kanan halaman
h
:
tinggi sel, nilai default 0
txt
:
teks yang akan dicetak, nilai default kosong
border
:
garis batas sel, dapat bernilai 0 untuk tanpa border dan 1 untuk membentuk frame. Atau dapat berupa string yang terdiri dari beberapa atau seluruh karakter berikut (urutan bebas) : L(left), T(top), R(right), B(bottom). Nilai default 0.
ln
:
menyatakan mode perpindahan posisi saat ini setelah pemanggilan metode, dapat bernilai : 0 untuk pindah ke kanan, 1 untuk pindah ke awal baris berikutnya, dan 2 untuk berpindah ke bawah. Nilai default 0.
align
:
mengatur perataan teks, dengan nilai : L atau string kosong untuk rata kiri, C untuk rata tengah, dan R untuk rata kanan. Nilai default L.
fill
:
mengatur transparansi sel, nilai 1 tidak transparan, 0 transparan. Nilai default 0.
link
:
URL atau pengenal dari nilai balik metode AddLink.
6. Output Metode ini akan mengirim dokumen ke tujuan yang ditentukan berupa string, file lokal atau browser. Untuk tujuan browser, plugin yang sesuai dibutuhkan atau akan tampil kotak dialog penyimpanan (kotak dialog ”Save as”). Sintaks metode ini : string Output([string name [, string dest]]) Parameter : name
:
nama dari file, jika tidak diberikan, dokumen akan dikirim ke browser dengan nama doc.pdf
Program Laporan Kehadiran (Erawan)
dest
:
59
menentukan tujuan pengiriman dokumen, dengan nilai : I
: mengirim file secara inline ke browser
D : mengirim ke browser dan memaksa proses download dengan nama sesuai parameter name F : simpan ke file lokal dengan nama sesuai parameter name S
: mengembalikan dokumen sebagai string
Jika parameter ini tidak diberikan tetapi parameter name diberikan maka tipe tujuan adalah F. Jika semua parameter tidak ditentukan maka tipe tujuan adalah I.
Penggunaan Pustaka FPDF dalam Pemrograman Setiap program yang menggunakan pustaka FPDF, tata urutan perintahnya mengikuti suatu aturan tertentu. Terdapat beberapa perintah utama yang harus ditulis secara berurutan. Urutan perintah-perintah tersebut dapat dilihat melalui contoh program dengan pustaka FPDF dibawah ini : Open(); $pdf->AddPage(); $pdf->SetFont(‘times’,’B’,’20’); $pdf->Cell(1,1,’Mencoba Membuat Laporan dengan Pustaka FPDF’); $pdf->Output(); ?>
Penjelasan masing-masing perintah tersebut sebagai berikut : 1. define(’FPDF_FONTPATH’,’fpdf/font/’); Laporan yang dihasilkan pustaka FPDF dapat menggunakan beberapa jenis font. File-file definisi jenis font ini berada dalam subdirektori font di dalam direktori fpdf. File-file ini dibutuhkan pada saat membuat laporan pdf dengan pustaka FPDF. Representasi subdirektori jenis font tersebut dalam program berupa sebuah kontanta yang dihasilkan oleh perintah pertama ini. Konstanta ini berisi informasi lokasi direktori font. 2. require ‘fpdf/fpdf.php’; Perintah ini akan memanggil file utama pustaka FPDF. 3. $pdf=new FPDF(); Perintah ini akan membuat objek baru dari kelas PDF. Sebelum dapat membuat dokumen FPDF perlu dibuat sebuah objek baru dari kelas PDF
Techno.Com, Vol. 7 No. 2, Mei 2007
60
4. $pdf->Open(); Metode open akan membangkitkan (generated) dokumen PDF. Sebenarnya metode ini bersifat opsional karena proses membangkitkan dokumen PDF juga dilakukan oleh metode berikutnya, yaitu AddPage. 5. $pdf->AddPage(); Metode ini akan menambahkan sebuah halaman baru ke dokumen. 6. $pdf->SetFont(‘times’,’B’,’20’); Sebelum dapat menampilkan teks dalam dokumen PDF, jenis font yang akan digunakan harus ditentukan terlebih dahulu. 7. $pdf->Cell(0,1,’Mencoba Membuat Laporan dengan Pustaka FPDF’); Fungsi Cell digunakan untuk menampilkan teks dalam dokumen PDF. Argumen pertama fungsi menentukan lebar ruang penulisan. Nilai 0 berarti lebar ruang penulisan menggunakan lebar maksimal yaitu 19 cm. Argumen kedua fungsi menentukan tinggi ruang penulisan, yaitu 1 cm. 8. $pdf->Output(); Fungsi Output digunakan untuk menentukan tujuan keluaran dokumen PDF. Tujuan dokumen dapat berupa sebuah file, berarti keluaran program akan berbentuk file, atau ditampilkan pada browser. Jika ditentukan tampil pada browser, plugin untuk menampilkan dokumen pdf harus dimiliki browser, jika tidak maka yang tampil adalah kotak dialog untuk melakukan penyimpanan file (kotak dialog ’Save as’). Database Aplikasi Sistem Absensi Aplikasi Sistem Absensi dalam artikel ini digunakan untuk mencatat data kehadiran seluruh pegawai Universitas Dian Nuswantoro. Aplikasi dibuat berbasis web dengan menggunakan PHP dan MySQL. Database yang digunakan aplikasi dirancang untuk menyatu dengan sistem kepegawaian yang sedang dikembangkan. Tabel-tabel utama yang terlibat dalam proses pembuatan laporan adalah tabel yang mencatat data kehadiran pegawai (absensi), tabel yang berisi data shift kerja yang ada di lingkungan Universitas Dian Nuswantoro (mas_shift), dan tabel yang berisi data pegawai yang mempunyai jam kerja tertentu sesuai pembagian shift kerja (shift_pegawai). Struktur ketiga tabel tersebut sebagai berikut : 1. Tabel absensi No 1
Nama Kolom no_absen_peg
Tipe char
Panjang 20
2 3
npp_peg nama_peg
char varchar
20 40
4 5
tgl_absen jam_masuk
date time
6 7
jam_keluar alasan
time varchar
Keterangan
Normal 07:00 dengan toleransi 15 menit 255
Normal 15:00 alasan tidak masuk kerja
Program Laporan Kehadiran (Erawan)
61
2. Tabel mas_shift No
Nama Kolom
Tipe
Panjang
1 2
kode_shift_peg jam_msk_shift
char time
15
3
jam_klr_shift
time
Keterangan
3. Tabel shift_pegawai No 1
Nama Kolom no_absen_peg
Tipe char
Panjang 20
2
kode_shift_peg
char
15
Keterangan
Lokasi File-file Aplikasi dan FPDF File-file aplikasi disimpan dalam direktori absensi. Karena Web server yang digunakan adalah WAMP, maka direktori absensi diletakkan dalam direktori www, yaitu direktori akar dokumen dari web server WAMP. Sedangkan lokasi direktori berisi file-file FPDF, yaitu fpdf, adalah di www/absensi/fpdf. Konversi Data Kehadiran Pegawai Proses absen kehadiran pegawai menggunakan mesin absensi yang menghasilkan data absensi dengan format dbase (dbf). Karena aplikasi menggunakan database MySQL, maka data dalam format dbase ini perlu dikonversi terlebih dahulu menjadi tabel MySQL. Proses konversi data menggunakan fungsi-fungsi dbase yang terdapat dalam bahasa script PHP. Pustaka fungsi dbase ini dipilih karena penggunaannya relatif mudah. Disamping itu, pustaka fungsi ini memang disediakan oleh PHP hanya untuk kebutuhan konversi database dengan format dbase. Singkatnya, pustaka ini akan berfungsi dengan baik jika digunakan hanya untuk konversi data. Hasil dari proses konversi data ini disimpan dalam salah satu tabel aplikasi yang sudah disiapkan, yaitu tabel absensi. Halaman-halaman Aplikasi Aplikasi terdiri dari beberapa halaman. Tetapi tidak semua halaman akan dipaparkan dalam artikel ini. Hanya halaman-halaman yang berkaitan langsung dengan proses pembuatan laporan dengan format PDF yang akan dibahas. Laporan dengan format PDF yang akan dihasilkan oleh aplikasi, diatur dalam salah satu halamannya. Tampilan halaman ini jika ditampilkan dalam browser terlihat dalam gambar berikut ini :
62
Techno.Com, Vol. 7 No. 2, Mei 2007
Gambar 3. Sistem Absensi
Pada halaman ini, disediakan beberapa fasilitas pelaporan. Fasilitas-fasilitas tersebut antara lain : 1. melihat daftar kehadiran seorang pegawai berdasarkan nama pegawai 2. memasukkan data alasan ketidakhadiran pegawai bila pegawai yang bersangkutan tidak hadir. 3. mencetak laporan daftar hadir pegawai dalam format PDF Fasilitas untuk mencetak laporan ini menyediakan tiga (3) pilihan pencetakan : a) cetak daftar hadir pegawai per sub bagian pegawai b) cetak daftar hadir pegawai per bagian pegawai c) cetak daftar hadir pegawai per pegawai
Program Laporan Kehadiran (Erawan)
63
Tampilan laporan disajikan dalam gambar berikut ini.
Gambar 4. Laporan Absensi Pegawai Pada layar laporan ini, untuk mencetak laporan ke printer dapat menggunakan toolbar print yang sudah tersedia secara otomatis. Jika toolbar ini diklik maka akan muncul kotak dialog print sebagai berikut :
Techno.Com, Vol. 7 No. 2, Mei 2007
64
Gambar 5. Print Dalam kotak dialog ini dapat diatur berbagai seting pencetakan dokumen PDF ke printer, antara lain : 1. Untuk mencetak hanya halaman tertentu saja, pada area Print Range pilih opsi pages from kemudian pada kotak from masukkan halaman awal dokumen yang akan dicetak, sedangkan kotak to diisi dengan halaman akhir dokumen yang akan dicetak. Jika ingin mencetak mulai dari halaman terakhir, cek opsi Reverse pages. 2. Pada area Page Handling dapat diatur jumlah salinan cetakan (Copies), dan skala pengaturan halaman cetak (Page Scaling) 3. Untuk mencetak dokumen PDF ke file, cek opsi Print to file 4. Untuk mencetak dalam warna hitam putih cek opsi Print color as black Kode Program Layar Laporan Source code dari layar laporan disajikan dibawah ini : 1.
Program Laporan Kehadiran (Erawan)
4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
14.
15.
16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
define('FPDF_FONTPATH','fpdf/font/'); require "fpdf/fpdf.php"; include "modulTgl.php"; include "admin/openDB.php"; $aw_absen=$_SESSION['s_aw_tgl_absen']; $ak_absen=$_SESSION['s_ak_tgl_absen']; $nolap=$_SESSION['s_nolap']; $tgllap=$_SESSION['s_tgllap']; switch($_REQUEST['pilih']){ case 1 : $sql="select * from absensi,pegawai where absensi.tgl_absen>='$aw_absen' and absensi.tgl_absen<='$ak_absen' and pegawai.bagian_peg='$_REQUEST[bagian_peg]' and absensi.no_absen_peg=pegawai.no_absen_peg order by pegawai.nama_peg,absensi.tgl_absen"; break; case 2 : $sql="select * from absensi,pegawai where absensi.tgl_absen>='$aw_absen' and absensi.tgl_absen<='$ak_absen' and absensi.no_absen_peg='$_REQUEST[no_absen_peg]' and absensi.no_absen_peg=pegawai.no_absen_peg order by pegawai.nama_peg,absensi.tgl_absen"; break; case 3 : $sql="select * from absensi,pegawai where absensi.tgl_absen>='$aw_absen' and absensi.tgl_absen<='$ak_absen' and absensi.no_absen_peg=pegawai.no_absen_peg order by pegawai.nama_peg,absensi.tgl_absen"; break; } $mq=mysql_query($sql) or die(mysql_error()); $i=0; while($mfa=mysql_fetch_array($mq)){ if ($mfa['jam_masuk']=='00:00:00' and $mfa['jam_keluar']<>'00:00:00'){ $ket='Tidak absen datang'; }elseif ($mfa['jam_keluar']=='00:00:00' and $mfa['jam_masuk']<>'00:00:00'){ $ket='Tidak absen pulang'; }elseif (($mfa['jam_keluar']=='00:00:00') and ($mfa['jam_masuk']=='00:00:00')){ $ket='Tidak hadir'; }else{ $ket=''; } $cell[$i][0]=$mfa['npp_peg']; $cell[$i][1]=$mfa['nama_peg'];
65
Techno.Com, Vol. 7 No. 2, Mei 2007
66
31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76.
$cell[$i][2]=$mfa['tgl_absen']; $cell[$i][3]=$mfa['jam_masuk']; $cell[$i][4]=$mfa['jam_keluar']; $cell[$i][5]=$ket; $cell[$i][6]=$mfa['alasan']; $cell[$i][7]=$mfa['subbagian_peg']; $cell[$i][8]=$mfa['bagian_peg']; $i++; } mysql_close(); //kelas turunan class PDF extends FPDF{ var $ti_head_lap=0.75; var $ti_kol_head=1; function kepLaporan($npp,$nama,$subbagian,$bagian,$aw,$ak,$nolap){ //judul laporan $this->SetFont('times','B',20); $this->Ln(); $this->Cell(3,1,'',0,0,'L'); $this->Cell(12,1,'Laporan Absensi Pegawai',0,0,'L'); $this->Ln(); $this->SetFont('times','B',13); $this->Cell(3,1,'',0,0,'L'); $this->Cell(12,0.8,'Periode : '.$aw.' s/d '.$ak,0,0,'L'); $this->Ln(); $this->SetFont('times','B',10); $this->Cell(3,1,'',0,0,'L'); $this->Cell(12,0.6,'No. Laporan : '.$nolap,0,0,'L'); $this->Ln(); $this->Ln(); //gambar logo UDINUS $this->Image('images/logo-udinus.png',1,2,2.5); $this->Ln(); //header laporan $this->SetFont('times','B',12); $this->Cell(2,$this->ti_head_lap,'NPP',0,0,'L'); $this->Cell(4,$this->ti_head_lap,': '.$npp,0,0,'L'); $this->Cell(6,$this->ti_head_lap,'',0,0,'L'); $this->Cell(3,$this->ti_head_lap,'Sub Bagian',0,0,'L'); $this->Cell(4,$this->ti_head_lap,': '.$subbagian,0,0,'L'); $this->Ln(); $this->Cell(2,$this->ti_head_lap,'Nama',0,0,'L'); $this->Cell(4,$this->ti_head_lap,': '.$nama,0,0,'L'); $this->Cell(6,$this->ti_head_lap,'',0,0,'L'); $this->Cell(3,$this->ti_head_lap,'Bagian',0,0,'L'); $this->Cell(4,$this->ti_head_lap,': '.$bagian,0,0,'L');
Program Laporan Kehadiran (Erawan)
77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121.
$this->Ln(); } function headTabel(){ //header tabel $this->SetFont('times','B',12); $this->SetFillColor(175,225,255); $this->Cell(1,$this->ti_kol_head,'No',1,0,'C',1); $this->Cell(3,$this->ti_kol_head,'Tanggal',1,0,'C',1); $this->Cell(3,$this->ti_kol_head,'Datang',1,0,'C',1); $this->Cell(3,$this->ti_kol_head,'Pulang',1,0,'C',1); $this->Cell(4,$this->ti_kol_head,'Keterangan',1,0,'C',1); $this->Cell(5,$this->ti_kol_head,'Alasan',1,0,'C',1); $this->Ln(); } function footTabel($tgllap){ $this->SetFont('times','',10); $tgl=formatTglInd($tgllap); $this->Cell(13,1,'',0,0); $this->Cell(13,1,'Semarang, '.$tgl,0,0,'L'); $this->Ln(); $this->Cell(13,1,'',0,0); $this->Cell(6,1,'Kabag MSDM,',0,0,'L'); $this->Ln(); $this->Ln(); $this->Ln(); $this->Cell(13,1,'',0,0); $this->Cell(6,1,'(Gedion Mangun K., ST, MM)',0,0,'L'); $this->Ln(); $this->Ln(); } function Header(){ $this->SetFont('courier','BI','10'); $this->Cell(0,0.5,'Laporan Absensi Periodik',0,0,'R'); $this->Ln(); } function Footer(){ $this->SetY(-3.5); $this->SetFont('courier','I','10'); $this->Cell(1,0.5,'By : Unit Pengembangan SDM MSDM',0,0,'L'); $this->Cell(18,0.5,'Halaman : '.$this>PageNo().'/{nb}',0,0,'R'); } } //membuat obyek kelas $pdf=new PDF('P','cm','Legal'); $pdf->Open();
67
Techno.Com, Vol. 7 No. 2, Mei 2007
68
122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164.
$pdf->AddPage(); $pdf->AliasNbPages(); $pdf->SetMargins(1.5,1,1); //data absen $ti_kol_sel=0.75; $no=0; //cetak kepala laporan pertama kali $npp=$cell[0][0]; $nama=$cell[0][1]; $subbagian=trim($cell[0][7]); $bagian=trim($cell[0][8]); $aw_absen_ind=formatTglInd($aw_absen); $ak_absen_ind=formatTglInd($ak_absen); $pdf>kepLaporan($npp,$nama,$subbagian,$bagian,$aw_absen_ind,$ak_absen_ind ,$nolap); $pdf->headTabel(); $pdf->SetFont('times','',10); //perulangan cetak data absen for($j=0;$j<$i;$j++){ //cek jika berganti pegawai if ($cell[$j][1]<>$nama){ $pdf->footTabel($tgllap); $no=0; $pdf->AddPage(); $npp=$cell[$j][0]; $nama=$cell[$j][1]; $subbagian=trim($cell[0][7]); $bagian=trim($cell[0][8]); $aw_absen_ind=formatTglInd($aw_absen); $ak_absen_ind=formatTglInd($ak_absen); $pdf>kepLaporan($npp,$nama,$subbagian,$bagian,$aw_absen_ind,$ak_absen_ind ,$nolap); $pdf->headTabel(); $pdf->SetFont('times','',10); } //cetak rekod absen $no++; //format tanggal Indonesia $th=substr($cell[$j][2],0,4); $bl=substr($cell[$j][2],5,2); $tg=substr($cell[$j][2],8,2); $tgl=$tg.'-'.$bl.'-'.$th; $pdf->Cell(1,$ti_kol_sel,$no,'LB',0,'R'); $pdf->Cell(3,$ti_kol_sel,$tgl,'LB',0,'C'); //cetak jam masuk dg warna merah jika alpa
Program Laporan Kehadiran (Erawan)
165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185.
69
if ($cell[$j][3]>'07:15:00' or $cell[$j][3]=='00:00:00') $pdf->SetTextColor(255,0,0); else $pdf->SetTextColor(0,0,0); $pdf->Cell(3,$ti_kol_sel,$cell[$j][3],'LB',0,'C'); //cetak jam keluar dg warna merah jika alpa if ($cell[$j][4]<'15:00:00' or $cell[$j][4]=='00:00:00') $pdf->SetTextColor(255,0,0); else $pdf->SetTextColor(0,0,0); $pdf->Cell(3,$ti_kol_sel,$cell[$j][4],'LB',0,'C'); $pdf->SetTextColor(0,0,0); $pdf->Cell(4,$ti_kol_sel,$cell[$j][5],'LB',0,'L'); $pdf->Cell(5,$ti_kol_sel,$cell[$j][6],'LRB',0,'L'); $pdf->Ln(); //simpan data nama untuk evaluasi ganti pegawai $nama=$cell[$j][1]; } $pdf->footTabel($tgllap); $pdf->Output(); ?>
Berikut ini penjelasan dari baris-baris kode program yang penting di atas : 1. baris ke-3 untuk mengatur memperbesar alokasi memori default yang disediakan untuk proses kerja PHP karena proses pembuatan laporan berformat PDF memori kerja yang lebih besar. 2. baris ke-12 sampai 16 untuk menentukan perintah sql yang digunakan untuk memilih rekod yang akan ditampilkan. Perintah sql yang akan digunakan tergantung dari isi variabel $_REQUEST[’pilih’] yang isinya tergantung dari pilihan pencetakan yang dipilih user. 3. baris ke-17 sampai 40 menyiapkan data kehadiran pegawai yang akan dicetak. Data ini disimpan ke variabel array dua dimensi. 4. baris ke-42 sampai 118 mendefinisikan kelas turunan PDF dari kelas FPDF. Kelas PDF berisi fungsi-fungsi tambahan yang diperlukan dalam pembuatan laporan. Fungsi-fungsi tersebut antara lain : a. fungsi kepLaporan untuk membuat kepala laporan b. fungsi headTabel untuk membuat kepala tabel daftar hadir pegawai c. fungsi footTabel untuk membuat area tanda tangan pejabat yang berwenang d. fungsi header untuk membuat header laporan yang akan dicetak otomatis di setiap lembar laporan e. fungsi footer untuk membuat footer laporan yang akan dicetak otomatis di setiap lembar laporan 5. baris ke-119 dan selanjutnya mulai mencetak laporan dengan format PDF
70
Techno.Com, Vol. 7 No. 2, Mei 2007
KESIMPULAN Pustaka FPDF memiliki hampir seluruh fasilitas yang dibutuhkan untuk mencetak laporan yang diinginkan. Pustaka ini dapat didownload secara gratis dari internet, sehingga dari segi biaya sangat menguntungkan para pengembang aplikasi web. Sedangkan dari sisi kemudahan penggunaan, pustaka ini relatif mudah diaplikasikan, apalagi bagi para pengembang aplikasi web yang sudah terbiasa dengan bahasa script PHP dan database server MySQL serta menguasai konsep pemrograman berorientasi obyek. Kelemahan penggunaan pustaka FPDF ini pada waktu yang dibutuhkan untuk membuat dokumen PDF sebelum dapat dicetak ke printer. Proses ini memakan waktu yang lebih lama dibandingkan dengan proses pencetakan menggunakan fasilitas milik browser atau menggunakan script Javascript.
DAFTAR PUSTAKA 1. Ridwan Sanjaya, Membuat Laporan PDF untuk Aplikasi Web dengan PHP 5, PT Elex Media Komputindo, Jakarta, 2009 2. Dokumentasi paket pustaka PDF, http://www.fpdf.org, 05 Desember 2009, waktu download 12:30 WIB 3. Wahana Komputer, Panduan Praktis Pengolahan Database dengan MySQL, Penerbit Andi, Yogyakarta, 2006 4. Manual PHP 5, http://www.php.net/download-docs.php, 09 April 2006, waktu download 15:42 WIB