Asudahlah.com Indonesia

Programming, tutorials, mechatronics, operating systems, dan artikel teknologi lainnya.

Membuat barcode di PDF dengan PHP FPDF

Tidak ada komentar
Kali ini saya akan menjelaskan bagaimana cara menambahkan barcode pada file pdf yang kita buat dengan menggunakan library php FPDF. Pada tutorial ini saya berasumsi bahwa anda sudah memahami dasar penggunaan library FPDF untuk membuat sebuah file pdf. Jika belum, anda bisa membaca tutorial Cara membuat file PDF di PHP menggunakan library FPDF.

Mengapa dan apa itu barcode?

Barcode adalah data numerik optik berupa runtutan garis-garis yang bisa dibaca oleh mesin. Biasanya anda temui pada label-label, kemasan produk, atau berkas elektronik.
Barcode digunakan untuk mempercepat input data numerik, pada toko swalayan misalnya, input produk pada sistem kasir sudah menggunakan barcode, jadi kasir tidak perlu menginputkan angka secara manual dengan keyboard (kecuali dalam kondisi tertentu). Yang pastinya akan mempercepat proses pelayanan.
Tidak hanya terbatas pada produk saja, barcode juga biasa digunakan pada label, nota tagihan, kwitansi yang umumnya digunakan oleh perusahaan-perusahaan untuk mempercepat proses input data.

Dukungan barcode untuk library FPDF.

Pada dasarnya, FPDF tidak memiliki dukungan untuk membuat barcode. Namun bukan berarti anda tidak bisa membuat barcode dengan librari FPDF.
Untuk dapat menambahkan barcode di dokumen pdf anda, anda memerlukan sebuah class custom yang menambah dukungan barcode di pdf.
Sudah saya siapkan di repository saya, silahkan download disini:
https://github.com/gemul/fpdf-barcode

Terdapat banyak format barcode yang beredar. Disini saya akan bahas hanya 2 format yang paling umum digunakan yaitu EAN13 dan UPC_A.
EAN adalah singkatan dari European Article Number. Merupakan standar yang digunakan secara global untuk mengidentifikasi produk, packaging, dan manufaktur.
UPC adalah singkatan dari Universal Product Code. Merupakan standar yang  digunakan secara luas  di amerika, kanada, inggris, australia, new zealand, dan eropa untuk mengidentifikasi barang.
Keduanya dapat menampung sebanyak 12 digit angka.
Untuk lebih lengkapnya mengenai barcode silahkan baca di wikipedia. Back to the point.

Menggunakan custom fpdf class untuk membuat barcode.

Pertama, tentu saja anda memerlukan library FPDF, bisa anda download disini.
Lalu download dan copy-paste file fpdf_barcode.php dari repository saya ke folder htdocs anda beserta library utama FPDF. Pastikan baris kedua dari file fpdf_barcode.php merujuk pada file fpdf.php dari library utama.
Berikut adalah struktur folder saya:
\htdocs\pdf\
         |-fpdf\
         |  |-fpdf.php
         |-fpdf_barcode.php
jadi baris kedua file saya harus seperti ini:
require('fpdf/fpdf.php');

Selanjutnya, buat sebuah file php baru untuk generator pdf. Lalu copy-paste kode berikut kedalamnya.

<?php
require('fpdf_barcode.php');

$pdf = new PDF_BARCODE('P','mm','A4');

$pdf->AddPage();

//EAN13 test
$pdf->EAN13(10,10,'123456789012',5,0.5,9);
$pdf->EAN13(10,20,'123456789012',5,0.35,9);
$pdf->EAN13(10,30,'123456789012',10,0.35,9);

//UPC_A test
$pdf->UPC_A(100,10,'123456789012',5,0.5,9);
$pdf->UPC_A(100,20,'123456789012',5,0.35,9);
$pdf->UPC_A(100,30,'123456789012',10,0.35,9);

$pdf->Output();

Simpan, lalu buka melalui browser. Maka hasilnya adalah seperti berikut.

Maksud dari kode diatas adalah, pertama kita muat library fpdf_barcode.php (bukan fpdf.php).
 Lalu kita buat sebuah object baru dari class PDF_BARCODE, simpan dengan variabel $pdf.
class PDF_BARCODE merupakan turunan dari FPDF, jadi parameter-parameter dan fungsi yang digunakan sama.
Lalu buat sebuah halaman baru dengan perintah AddPage().
Baris berikutnya adalah perintah untuk membuat barcode EAN13 dan UPC_A.

Pada class PDF_BARCODE, terdapat dua buah method tambahan yaitu EAN13 dan UPC_A. Sesuai namanya, masing-masing fungsi digunakan untuk membuat sebuah barcode.

Untuk EAN13, cara penggunaanya adalah:
$pdf->EAN13(float x, float y, string barcode [, float h [, float w[, int font_size]]])

Sedangkan untuk UPC_A, caranya adalah:
$pdf->UPC_A(float x, float y, string barcode [, float h [, float w[, int font_size]]])

Keduanya memiliki format parameter yang sama, dimana:
  • x dan y adalah koordinat posisi penempatan barcode. 
  • barcode adalah isi dari barcode, berupa 12 digit angka.
  • h merupakan tinggi barcode, defaultnya adalah 16.
  • w merupakan lebar garis barcode, bukan lebar keseluruhan barcode. Defaultnya adalah 0.35.
  • font_size adalah ukuran teks dibawah barcode, dalam satuan point.
Jadi, baris berikut:

$pdf->EAN13(10,10,'123456789012',5,0.5,9);

Berarti kita membuat barcode format EAN13 dengan posisi 10mm dari atas halaman, 10mm dari kiri halaman. Barcode berisi angka 123456789012 dengan tinggi 5, dan lebar garis 0.5 Dan text dibawah barcode berukuran 9 point.

Jika anda masih bingung, silahkan simak video tutorial di channel saya berikut ini:
https://www.youtube.com/watch?v=nZCvHXt2AyI
Source code bisa anda download melalui link pada deskripsi.

Tidak ada komentar :

Posting Komentar

Cara membuat file PDF di PHP menggunakan library FPDF

Tidak ada komentar
Sekarang ini, ketika segala sesuatu mulai terhubung ke internet. Banyak orang yang lebih memilih menggunakan aplikasi berbasis web (biasa disebut webapp) daripada aplikasi berbasis desktop dengan berbagai alasan, salah satunya adalah mobilitas dan fleksibilitas. Dengan web app, anda bisa mengakses aplikasi anda kapan saja dimana saja.
Web app juga bisa lebih powerful daripada aplikasi stand alone. Dikarenakan pemrosesan di lakukan di sisi server, bahkan perangkat dengan kemampuan komputasi rendah dapat mengakses informasi yang menggunakan perhitungan kompleks.
Namun webapp juga memiliki beberapa kelemahan. salah satunya adalah ketika berurusan dengan dokumen fisik.

Generasi PDF di PHP dengan FPDF

PDF memberikan kemampuan web app untuk menyajikan data yang dapat di cetak dengan tata letak yang tetap. Seperti mencetak dokumen, struk, kwitansi, tagihan, laporan dan lain sebagainya.
Pada tutorial ini, saya akan menggunakan library FPDF. FPDF adalah sebuah library PHP untuk membuat dan membangun file pdf dengan memanipulasi isi dokumen pdf melalui program. Dokumentasinya bisa anda baca disini.
Berikut adalah tutorial dasar penggunaan library FPDF untuk membuat dokumen pdf di php.

Membangun struktur PDF di PHP

Pertama, download library fpdf disini.
Lalu ekstrak isinya di folder htdocs anda.
Lalu buat sebuah file php baru dan isikan kode berikut. File php ini nantinya yang akan menjadi generator dokumen pdf.
Pada contoh ini saya akan menggunakan settingan kertas ukuran A4, portrait, dengan satuan milimeter.


<?php
//call the FPDF library
require('fpdf17/fpdf.php');

//A4 width : 219mm
//default margin : 10mm each side
//writable horizontal : 219-(10*2)=189mm

//create pdf object
$pdf = new FPDF('P','mm','A4');

?>


Selanjutnya, buat sebuah halaman kosong dengan perintah $pdf->AddPage(); . Lalu output haslinya dengan perintah $pdf->Output();


<?php
//call the FPDF library
require('fpdf17/fpdf.php');

//A4 width : 219mm
//default margin : 10mm each side
//writable horizontal : 219-(10*2)=189mm

//create pdf object
$pdf = new FPDF('P','mm','A4');
//add new page
$pdf->AddPage();
//output the result
$pdf->Output();
?>


Buka browser anda, akses file php yang anda buat tadi. Maka anda akan mendapatkan tampilan pdf seperti ini.
Tutorial pdf dengan php fpdf - halaman kosong
Selamat, anda telah membuat sebuah dokumen pdf. Sekarang anda hanya tinggal mengisinya dengan konten.

Menambahkan konten pada pdf dengan cells

Konten teks di pdf ditulis dengan menggunakan cells (bayangkan cell sebagai sebuah kotak textbox). Anda bisa mengisi teks dengan cell dan tiap-tiap cell bisa memiliki properti masing-masing seperti lebar, tinggi, garis tepi, dll.
Cell ditumpuk secara horizontal dari kiri ke kanan dan satu baris berakhir dengan cell yang memiliki property new line atau dengan memanggil perintah $pdf->Ln(); ibarat menekan tombol enter ketika mengetik.
Tutorial PHP FPDF - Penjelasan cell di php fpdf
FPDF cell memiliki parameter berikut:
Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])
w dan h adalah untuk lebar dan tinggi.
txt untuk konten teks nya.
border untuk mengatur border, bisa berupa angka 1 untuk semua border, atau 0 untuk tanpa border. Bisa juga kombinasi antara huruf L,T,R,B untuk left, top, right, atau bottom.
ln adalah untuk line ending (new line), angka 1 artinya baris berakhir pada cell ini (enter).
align adalah perataan teks kiri/tengah/kanan (L,C,R). Tidak ada justify
untuk fill and link, kita belum membutuhkannya kali ini. Silahkan baca dokumentasinya untuk lebih jelasnya.

Mengatur font di pdf

Sebelum menambahkan sesuatu di file pdf kita, alangkah baiknya kita mengatur font yang akan kita gunakan terlebih dahulu.
Untuk mengubah setingan font, kita bisa menggunakan perintah $pdf->SetFont(); berikut adalah petunjuknya.
SetFont(string family [, string style [, float size]])
family adalah jenis font yang digunakan ( 'Arial','Courier','Times'). Harus berupa font default atau font yang sudah didefinisikan dengan perintah AddFont (akan saya jelaskan di tutorial lain). Sementara ini kita pakai Arial saja.
style adalah kombinasi dari B,I,U (bold, italic, underlined) atau string kosong.
size adalah ukuran font dalam satuan point (sama seperti di ms word).

Demikian adalah perintah dasar yang kita butuhkan untuk membuat sebuah dokumen pdf. Sekarang mari kita coba membuat sebuah dokumen pdf.

Membuat  nota tagihan (invoice) pdf di php

Berikut adalah cuplikan kode untuk invoice di pdf. Copas kode berikut diantara setelah perintah AddPage dan sebelum perintah Output.

//set font jadi arial, bold, 14pt
$pdf->SetFont('Arial','B',14);

//Cell(width , height , text , border , end line , [align] )

$pdf->Cell(130 ,5,'GEMUL APPLIANCES.CO',0,0);
$pdf->Cell(59 ,5,'INVOICE',0,1);//end of line

//set font jadi arial, regular, 12pt
$pdf->SetFont('Arial','',12);

$pdf->Cell(130 ,5,'[Street Address]',0,0);
$pdf->Cell(59 ,5,'',0,1);//end of line

$pdf->Cell(130 ,5,'[City, Country, ZIP]',0,0);
$pdf->Cell(25 ,5,'Date',0,0);
$pdf->Cell(34 ,5,'[dd/mm/yyyy]',0,1);//end of line

$pdf->Cell(130 ,5,'Phone [+12345678]',0,0);
$pdf->Cell(25 ,5,'Invoice #',0,0);
$pdf->Cell(34 ,5,'[1234567]',0,1);//end of line

$pdf->Cell(130 ,5,'Fax [+12345678]',0,0);
$pdf->Cell(25 ,5,'Customer ID',0,0);
$pdf->Cell(34 ,5,'[1234567]',0,1);//end of line

//buat dummy cell untuk memberi jarak vertikal
$pdf->Cell(189 ,10,'',0,1);//end of line

//alamat billing 
$pdf->Cell(100 ,5,'Bill to',0,1);//end of line

//tambah dummy cell di awal untuk indentasi
$pdf->Cell(10 ,5,'',0,0);
$pdf->Cell(90 ,5,'[Name]',0,1);

$pdf->Cell(10 ,5,'',0,0);
$pdf->Cell(90 ,5,'[Company Name]',0,1);

$pdf->Cell(10 ,5,'',0,0);
$pdf->Cell(90 ,5,'[Address]',0,1);

$pdf->Cell(10 ,5,'',0,0);
$pdf->Cell(90 ,5,'[Phone]',0,1);
 
//buat dummy cell untuk memberi jarak vertikal
$pdf->Cell(189 ,10,'',0,1);//end of line

//invoice 
$pdf->SetFont('Arial','B',12);

$pdf->Cell(130 ,5,'Description',1,0);
$pdf->Cell(25 ,5,'Taxable',1,0);
$pdf->Cell(34 ,5,'Amount',1,1);//end of line

$pdf->SetFont('Arial','',12);

//Angka diratakan kanan, jadi kita beri property 'R'

$pdf->Cell(130 ,5,'UltraCool Fridge',1,0);
$pdf->Cell(25 ,5,'-',1,0);
$pdf->Cell(34 ,5,'3,250',1,1,'R');//end of line

$pdf->Cell(130 ,5,'Supaclean Diswasher',1,0);
$pdf->Cell(25 ,5,'-',1,0);
$pdf->Cell(34 ,5,'1,200',1,1,'R');//end of line

$pdf->Cell(130 ,5,'Something Else',1,0);
$pdf->Cell(25 ,5,'-',1,0);
$pdf->Cell(34 ,5,'1,000',1,1,'R');//end of line

//total
$pdf->Cell(130 ,5,'',0,0);
$pdf->Cell(25 ,5,'Subtotal',0,0);
$pdf->Cell(4 ,5,'$',1,0);
$pdf->Cell(30 ,5,'4,450',1,1,'R');//end of line

$pdf->Cell(130 ,5,'',0,0);
$pdf->Cell(25 ,5,'Taxable',0,0);
$pdf->Cell(4 ,5,'$',1,0);
$pdf->Cell(30 ,5,'0',1,1,'R');//end of line

$pdf->Cell(130 ,5,'',0,0);
$pdf->Cell(25 ,5,'Tax Rate',0,0);
$pdf->Cell(4 ,5,'$',1,0);
$pdf->Cell(30 ,5,'10%',1,1,'R');//end of line

$pdf->Cell(130 ,5,'',0,0);
$pdf->Cell(25 ,5,'Total Due',0,0);
$pdf->Cell(4 ,5,'$',1,0);
$pdf->Cell(30 ,5,'4,450',1,1,'R');//end of line

Simpan file php nya, lalu refresh browser. Jika tidak ada kesalahan pengetikan, maka hasilnya akan seperti ini.
Selamat, anda sudah bisa membuat pdf invoice anda sendiri. Sekarang anda tinggal mengotak-atik nya sesuai kebutuhan dan kreatifitas anda untuk membuat kwitansi, laporan, struk, formulir dan dokumen cetak lainnya.

Jika anda masih bingung, silahkan simak tutorial videonya di channel saya disini:
https://www.youtube.com/watch?v=R32LF_pONNY

Link untuk source code nya ada di deskripsi video.

Tidak ada komentar :

Posting Komentar