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);

26 comments:

Unknown 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.

Software Bali 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

yana 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

Obinote said...

Gan ane pakek XAMPP 1.7.4

PPHP-nya 5.3.5

ada g cara supaya bisa membuat perintah print selain dengan kode tersebut?

casmadi said...

@obinote ane blom nyoba gan selain dengan kode diatas, intinya klo di php menggunakan fungsi atau library php_printer

Share Education said...

gan, gimana ya caranya kalo cetak di client...???

Share Education said...
This comment has been removed by the author.
Anonymous said...

Fantastic goods from you, man. I've understand your stuff previous to and you are just too great. I actually like what you have acquired here, really like what you are saying and the way in which you say it. You make it enjoyable and you still care for to keep it sensible. I can't wait to read much more from
you. This is actually a tremendous website.


Feel free to surf to my homepage: razor scooter parts

Anonymous said...

What's up to all, it's really a fastidious for me to visit this website, it consists of precious Information.



Stop by my webpage :: vinyl siding

Anonymous said...

I relish, lead to I found just what I used to be
having a look for. You have ended my 4 day long hunt! God
Bless you man. Have a great day. Bye

my blog post - senseo coffee maker

Anonymous said...

Remarkable! Its genuinely amazing paragraph, I have got much clear idea regarding from this article.


my page: Moderate Alcohol

Anonymous said...

permisi , saya test pakai HP LaserJet Professional P1102 bisa call printernya tapi cm gulung kertas tidak mencetak di kertasnya hanya menggulung saja kenapa ? apakah hrs dengan printer yang seperti EPSON TM-U210D ? mohon petunjuknya .trimakasih

casmadi said...

@ Anonymous kalau untuk printer diluar printer tersebut saya belum pernah nyoba, mohon maaf :-)

Dhoiku said...

mau nanya klo coba ngeprint struk ga pake printer bsa ga yah?

Unknown said...

mas, mau tanyak. untuk script printer_open support enggak sama php 5.5?

Unknown said...

Pak saya coba dengan cara ini berhasil tapi saya kesulitan mengulang data yg tampiltsesuai sesuai id yg ada di database mysql karna banyak contoh hanya print string $text="hello word"