Tuesday, June 1, 2010

Membuat Struk Dengan PHP

Bagaimana caranya membuat struk belanja seperti struk pada saat kita belanja di supermarket

atau swalayan dengan menggunakan php? berikut tutorial singkatnya :
  1. Pastikan tanda comment ;extension=php_printer.dll telah dihilangkan
    pada file php.ini yang terletak di \apache\bin\php.ini
  2. Restart apache
  3. Berikut contoh scriptnya


<?php
$tanggal = date("d-m-Y");
$jam = date("H:i:s");
$var_magin_left = 10;
$p = printer_open('\\\\komputer1\\EPSON TM-U210D');
printer_set_option($p, PRINTER_MODE, "RAW"); // mode disobek (gak ngegulung kertas)
printer_start_doc($p);
printer_start_page($p);
$font = printer_create_font("Arial", 8, 7, PRINTER_FW_NORMAL, false, false, false, 0);
printer_select_font($p, $font);
printer_draw_text($p, ".: CASMADI LIBRARY :.",130,0);
printer_draw_text($p, date("Y/m/d H:i:s"),255, 40);

printer_draw_text($p, "Kasir", $var_magin_left, 40);
printer_draw_text($p, ":",70, 40);
printer_draw_text($p, 'casmadi',80, 40);

// Header Bon
$pen = printer_create_pen(PRINTER_PEN_SOLID, 1, "000000");
printer_select_pen($p, $pen);
printer_draw_line($p, $var_magin_left, 65, 400, 65);
printer_draw_text($p, "TRANSAKSI", $var_magin_left, 70);
printer_draw_text($p, "QTY", 290, 70);
printer_draw_text($p, "PRICE", 350, 70);
printer_draw_line($p, $var_magin_left, 85, 400, 85);

$row +=150;
printer_draw_text($p, "Terima Kasih Atas Kunjungan Anda", 80, $row);

printer_delete_font($font);
printer_end_page($p);
printer_end_doc($p);
printer_close($p);
?>

Penjelasan Skript :

$p = printer_open('\\\\komputer1\\EPSON TM-U210D');

berfungsi untuk membuka koneksi ke printer, contoh diatas adalah apabila printer berada didalam jaringan / printer sharing. Sedangkan untuk printer yang ada di komputer kita tinggal menuliskan nama printernya saja. Contohnya seperti dibawah ini :

$p = printer_open('EPSON TM-U210D');

Membuat dan memilih jenis garis
$pen = printer_create_pen(PRINTER_PEN_SOLID, 1, "000000");
printer_select_pen($p, $pen);

Menuliskan teks
printer_draw_text($p, ".: CASMADI LIBRARY :.",130,0);

13 comments:

blame said...

menarik sekali...

Muhammad Riski Hajar said...

permisi mas, untuk function printer php udah ada di versi yang berapa ya? trus kalau boleh tau web servernya pake apa mas? trims,

casmadi said...

@muhammad:di php 5 dah ada(klo gak ada cari manual aja php_printernya), webserver pake apache.

Dhi Ice said...

tidak semua versi PHP bisa support dengan ekstensi php_printer.dll
setahu saya hanya versi PHP 5.2.6 yang stabil, di atas dan dibawah versi tsb printer_open() tidak bisa jalan.

webserver disarankan pakai Apache versi 2.2.9;

kalo bung Casnadi pakai PHP dan Apache versi berapa?

casmadi said...

@Dhi Ice : memang betul tidak semua versi php support untuk function tsb,malah di php terbaru gak support ketika saya coba(ntah mengapa). ketika saya bikin aplikasi tsb menggunakan PHP Version 5.2.5 dan apache Apache 2.2.6, thank's koreksinya :D

Anonymous said...

Makasih info nya.. ternyata php_printer tidak berjalan di semua versi PHP.. pantes aja eror terus. Makasih banyak yah... blog yang sangat bermanfaat. Keep posting :).... God Bless..

Signature Park Apartment said...

sudah saya coba menggukan php 5.2.6 dan apache 2.2.9 di windows 7 ok berjalan dengan baik. tp klo dilinux gmn ya?,. saya cari2 extension php_printer.so di google ga dapet2.. tolong donks siapa yg tau, minta solusinya.

I Made Wibawa Putra said...

kalau server pake xampp
seting
printah printer_open() bagaimana ?
mohon pencerahaanya..

Terima kasih

casmadi said...

@made
setting agar perintah printer_open terbaca di php hanya dengan mengaktifkan modul pritner
php_printer.dll yang ada pada php.ini seperti yang telah saya jelaskan diatas. IMHO

wayan said...

kalau mau menentukan jenis kertas nya gmn? ada functionnya ga? makasi sebelumnya...

casmadi said...

klo yang saya coba sih kertas standart seperti kertas gulung yang kecil, tapi untuk setting kertas bisa dicoba seperti ini :

printer_set_option($my_printer, PRINTER_PAPER_FORMAT,
PRINTER_FORMAT_CUSTOM);
then the width
printer_set_option( $my_printer,PRINTER_PAPER_WIDTH, 340);

Semoga Berhasil :D

Yadi said...

mas, aku pake perintah printer_mode "raw" si kertas nya tetep menggulung, gmana ya caranya.. ?

pas saya pake perintah printer_write, perintah mode raw itu jalan, tapi pas saya pake perintah printer_draw_text,, malah menggulung...

Anonymous said...

saya memakai komputer lewat jaringan dengan fungsi printer_open(\\\\komputer\\printer); tapi tetep ada masalah, apa yang kurang ya? mohon pencerahannya