Saturday, June 30, 2012

Mencetak Dokumen ke Printer Langsung dengan PHP

  1. Download file php_printer-xxx-ts-vc6.zip (file php_printer-xxx yang sesuai dengan versi PHP anda)
  2. Ekstrak file php_printer ke folder C:\xampp\php\ext
  3. Buka file php.ini di C:\xampp\php\
  4. Tambahkan baris
    extension=php_printer.dll
  5. Jalankan apache atau load ulang PHP anda
    Catatan :
    - http://downloads.php.net/pierre/ dan cari file php_printer-xxx yang sesuai dengan versi PHP anda.
    - cek phpinfo()di phpmyadmin, cari "printer"
    - Sintak lengkap bisa dilihat di http://php.net/manual/en/ref.printer.php
Contoh Script :
$tanggal = date("d-m-Y");
$jam = date("H:i:s");
$var_magin_left = 10;
$printer = printer_open('Canon MP250 series Printer');
printer_set_option($printer, PRINTER_MODE, "RAW"); // mode disobek ( kertas tidak menggulung )
printer_start_doc($printer);
printer_start_page($printer);
$font = printer_create_font("Arial", 18, 17, PRINTER_FW_NORMAL, false, false, false, 0);
printer_select_font($printer, $font);
printer_draw_text($printer, ".: TOKO XYZ :.",130,0);
printer_draw_text($printer, date("Y/m/d H:i:s"),255, 40);

printer_draw_text($printer, "Kasir", $var_magin_left, 40);
printer_draw_text($printer, ":",70, 40);
printer_draw_text($printer, 'abc',80, 40);

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

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

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

Catatan :
- Jika menggunakan WAMPP, saat print ke jaringan akan keluar error sbb:
 
Warning: printer_write() [function.printer-write]: couldn't allocate the printerjob [5] in ....

Hal ini dikarenakan secara default web server WAMPP dijalankan oleh user SYSTEM yang tidak diijinkan akses spool printer jaringan.

Solusinya adalah ubah user yang menjalankan wampp server (apache server) dengan cara:
  1. Jalankan service windows :
    Start > Control Panel > Administrative Tools > Services
  2. Klik Kanan wampapache service > properties
  3. Klik Tab Log On. Secara default dia dipilih Local System Account.
  4. Pilih This Account. Isi dengan user windowsnya saat ini.
  5. Save setingan dan restart servicenya.

2 comments: