Tuesday, April 3, 2012

Belajar PHP: Mencetak Dokumen ke Printer Langsung dengan PHP

Bagi anda yang menggunakan PHP sebagai bahasa pemrograman utama dalam mengerjakan project-project anda, pasti anda akan tertantang untuk menyelesaikan project program kasir dengan PHP. Ya, dengan Visual Basic, Delphi atau bahasa pemrograman lain kita bisa lebih mudah merekayasa modul cetak ke printer. Namun beda halnya dengan PHP, perlu perjuangan ekstra untuk dapat menghasilkan program kasir yang mampu mencetak dokumen langsung ke printer. Umumnya, programmer PHP akan menggunakan 2 solusi untuk memecahkan masalah ini. Solusi itu antara lain:


  1. menggunakan javascript print window,

  2. mencetak teks dalam bentuk PDF yang dimuat dalam browser lalu diprint.



Nah, sebenarnya PHP datang dengan banyak sekali ekstensi yang sangat berguna. Salah satu yang tidak populer dan dapat memecahkan masalah kita tadi adalah php_printer. php_printer adalah ekstensi PHP yang mampu meneruskan teks dari PHP untuk dapat langsung dicetak dengan printer. Solusi ini saya pakai untuk beberapa aplikasi buatan saya seperti PSBOnline Pro, SisfoSekolah Pro, SisKoperasi dll (lihat http://code.emka.web.id).

Awalnya memang cukup sulit untuk menemukan ekstensi ini, tapi sebenarnya anda cukup mudah mendapatkannya dari: http://downloads.php.net/pierre/ dan cari file php_printer-xxx yang sesuai dengan versi PHP anda. Saat tulisan ini terbit, php_printer baru tersedia untuk versi PHP 5.3, untuk versi 5.4 belum diketahui.

Instalasi Ekstensi php_printer



Untuk dapat mengikuti tutorial ini, silakan instalasi dulu ekstensi php_printer. Saya menggunakan XAMPP dengan PHP 5.3 TS VC6.
1. Unduh file php_printer-xxx-ts-vc6.zip
2. ekstrak file php_printer ke folder C:\xampp\php\ext
3. Buka file php.ini di C:\xampp\php\
4. Tambahkan baris

[sourcecode]
extension=php_printer.dll
[/sourcecode]


  1. Jalankan apache atau load ulang PHP anda.



Bila perlu cek dengan membuat file phpinfo() dan cari ekstensi printer apakah sudah dimuat. Contoh, pada sistem lokal saya:


Mencetak Teks ke Printer dengan PHP



Contoh skrip:

[sourcecode language="php"]
/* contoh text */
$lipsum = 'Eh, ini adalah testing aplikasi cetak teks langsung ke printer dengan PHP lhoo....';
/* tulis dan buka koneksi ke printer */
$printer = printer_open("Lexmark X850e XL V");
/* write the text to the print job */
printer_write($printer, $lipsum);
/* close the connection */
printer_close($printer); ?-->
[/sourcecode]

Nama printer dapat anda peroleh dengan melihat daftar printer dan scanner di Devices and Printers (Control Panel). Begitu script ini dieksekusi, PHP akan mengirim teks tersebut untuk langsung dicetak ke printer.

Alternatif Khusus Printer POS/Point of Sales/Printer Kasir



Alternatifnya bisa menggunakan library ESCPOS-PHP di Github -> http://github.com/mike42/escpos-php. Tutorialnya bisa disaksikan di Yutub berikut:

10 comments:

  1. bagaimana cara mencetak table dari database, yg lbih mudah dan efektif, jika menggunakan fpdf memiliki kelemahan jika teks dlam table tersebut sangat panjang, tapi jika pake ektensi diatas,, bagaimana jika multi user yg berbeda printer.. mohon pencerahan

    ReplyDelete
  2. bagaimana cara mencetak table dari database, yg lbih mudah dan efektif, jika menggunakan fpdf memiliki kelemahan jika teks dlam table tersebut sangat panjang, tapi jika pake ektensi diatas,, bagaimana jika multi user yg berbeda printer.. apakah ada solusi lain? mohon pencerahan

    ReplyDelete
  3. 1. tentu tiap solusi tidak bisa sempurna disetiap kasus mas sanwan, untuk FPDF kita memang harus menambahkan algoritma tambahan untuk mengatur sebisa mungkin lebar cell bisa mengakomodasi panjang karakter yang ada, semoga FPDF bisa menambahkan fitur ini secara native pada versi 2.0 nanti.

    2. untuk pengguna multiuser, kita bisa manfaatkan program diluar PHP yang melakukan deteksi dan pengumpulan daftar printer apa saja yang ada di komputer user.

    ReplyDelete
  4. gan jika ingin cetak ke jaringan gmn??
    sy udah coba $handle = printer_open("\\\\192.168.1.21\epson")
    tp msh gagal...

    ReplyDelete
  5. mas cyber, saya belum nemu caranya kalau dengan extension PECL diatas. tapi silakan baca http://stackoverflow.com/questions/5694144/printing-over-network-from-php-app, ada class LPR Print yang bisa send dokumen buat diprint oleh printer jaringan.

    ReplyDelete
  6. bagaimana cara pengaturan layout untuk hasil reportnya supaya rapi?

    misalnya untuk hasil cetak untuk POS adalah seperti ini

    PT. ABCD
    ----------------------------------------
    Nama Barang Jml Hrg Satuan Total
    ----------------------------------------
    Barang satu 2 25000 50000
    Barang dua 1 50000 50000
    ----------------------------------------
    Total = 100000
    Diskon = 5000
    Bayar = 100000
    Kembali = 95000

    Setiap nominal angka posisinya align right

    ReplyDelete
  7. jika anda pernah belajar layouting screen dengan C, anda akan mudah mengerti. PHP mendukung layout dengan tanda \t untuk tab, \n untuk ganti baris, %s string, %f float, %d desimal dan lain-lain.

    ReplyDelete
  8. Mas Gimana Caranya untuk mengubah font nya,,? sebab akan saya gunakan untuk mencetak barcode

    ReplyDelete
  9. saya sih belum pernah nyoba ganti font mas Joe, tapi coba di setting default printer ybs diganti aja font defaultnya. sapa tau bisa.

    ReplyDelete