
Cara Membuat RAW Printing Untuk Aplikasi Web
Anda sedang membuat atau menyelesaikan proyek aplikasi web namun tersendat pada fungsi print ke printer menggunakan Java Applet. Pada kali ini, artikel ini akan membahas step by step bagaimana caranya membuat fungsi printing pada aplikasi web dengan memanfaatkan Java applet. Printing di sini adalah RAW printing dan untuk menggunakannya bersamaan dengan Java applet, kami menggunakan yang namanya jZebra dan ini berhasil digunakan pada pengoperasian printer console berbasis 16 bit.

Tujuan printing di sini adalah dapat mencetak ke dalam kertas yang sangat panjang tapi bisa juga pada kertas printer biasa seperti A4. Kami mencoba hal ini karena ingin mencetak voucher makan untuk semua karyawan di pabrik. Memang banyak sekali ekstensi lainnya yang bisa kamu manfaatkan selain menggunakan jZebra ini. Tapi hal itu berbeda dengan jZebra, misalnya module php_printer yang terdapat pada fungsi PHP, ini dijalankan pada komputer server. Sedangkan jZebra ini dijalankan pada komputer klien yang mengklik tombol print, misalnya. Karena jZebra ini berjalan pada Java applet, Java pada browser, maka kamu harus menginstal JRE pada komputer yang ingin mengoperasikan RAW printing ini.
Di dalam artikel ini juga, sekaligus ingin berbagi pengalaman yang didapatkan dari berbagai sumber di internet dan mencobanya pada proyek client IT kami dalam mengeksplor jZebra, termasuk juga review menggunakannya dan sedikit memodifikasi halaman HTML agar dapat menyambungkannya ke dalam fungsi jZebra. Sebelum melanjutkan membaca dan mencoba apa yang ada di dalam artikel ini, kami sangat menyarankan untuk membaca panduan manual jZebra, apakah ini cocok dengan kebutuhan kamu saat ini atau tidak di halaman websitenya di sini.
Pertama-tama, kamu bisa membuat sebuah halaman HTML sederhana dimana di halaman tersebut kita akan memasang kode Java Applet-nya. dan simpan file HTML tadi pada folder baru yang kamu buat pada web server Apache lokal kamu. Lihat gambar di bawah ini untuk lebih jelasnya.

Gambar di atas menjelaskan bahwa sedang berlangsungnya proses inisialisasi jZebra. Setelah Applet berhasil dijalankan, browser akan meminta konfirmasi apakah kamu mengizinkan untuk menjalankan Java Applet atau tidak. Tandanya kamu akan melihat logo loading Java di tempat di mana kamu menaruh kode Applet di HTML tadi.

Saat printer yang didefinisikan sebelumnya tidak ada atau tidak berhasil terkoneksi, Applet akan memberikan pesan error bahwa printer is not ready. Silahkan kamu cek kembali printer kamu pada Control Panel -> Printer & Fax dan apakah sudah ada printer yang sudah disetting atau belum. Pada gambar di bawah ini bahwa printer default kami adalah bernama FinePrint.

Segala proses printing dimana tidak berhasilnya komunikasi antara Applet dengan printer akan terus memberikan informasi kesalahan seperti pada gambar di bawah ini.

Untuk percobaan, kami akan mengganti nama printer FinePrint tadi menjadi zebra.

Dan ternyata…. status Applet menjadi berhasil dan printer siap digunakan untuk RAW printing.

Silahka tekan tombol print yang sudah dibuat pada halaman HTML dan kamu akan melihat tampilan status Windows printer seperti pada gambar di bawah ini. Kamu bisa melihat pada gambar di bawah ini, nama dokumennya adalah “Java printing”.

Printer yang kami gunakan pada percobaan ini adalah menggunakan printer LX-300 yang menggunakan koneksi kabel USB. Pada saat kami menekan tombol Print, printer akan secara langsung melakukan printing dan akan berhenti setelah mencetak kalimat atau gambar terakhir. RAW printing ini punya karakteristik seperti DOS printing.

Pada percobaan ini, kami ingin membuat sedikit modifikasi pada jZebra. Sebagai catatan, status printing yang ditampilkan pada halaman HTML tadi adalah berbasis AJAX, sehingga kami mencoba untuk memodifikasi source-nya dan lebih menggunakan informasi AJAX daripada tombol Detect Printer untuk pengalaman yang mudah. Berikut source yang sudah dimodifikasi yang ditempatkan di halaman index.html dimana kami menyertakan fungsi utama Javascript.
... <script type="text/javascript" src="js/jzebra.js"></script> <body onLoad="detectPrinter()"> … <table width="75%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="2" bgcolor="#000000"><span id="printerStatusBar">Loading...</span></td></tr> <tr> <td width="47%"><form name="form1" method="post" > String untuk dicetak<br> <textarea name="struk" cols="50" rows="7" id="struk"></textarea> <br><input name="button" type=button onClick="printStruk(form1.struk.value)" value="Test Cetak"> <input name="button2" type=button onClick="print64()" value="Test Cetak (Base64)"> <input type="reset" name="Reset" value="Reset"></form></td> <td width="53%"> <applet name="jZebra" code="jzebra.RawPrintApplet.class" archive="js/jzebra.jar" width="100" height="100"> <param name="printer" value="zebra"> <param name="sleep" value="200"></applet></td></tr></table> …
Berikut adalah fungsi core dari Javascript-nya.
function detectPrinter() { var applet = document.jZebra; if (applet != null) { applet.findPrinter("zebra"); while (!applet.isDoneFinding()) { // Wait } var ps = applet.getPrintService(); if (ps == null) var info="Printer belum siap"; else var info="Printer \"" + ps.getName() + "\" siap"; } else var info="Java Runtime belum siap!"; document.getElementById("printerStatusBar").innerHTML=info; window.setTimeout('detectPrinter()',5000); } function printStruk(str) { var applet = document.jZebra; if (applet != null) { // Plain Text str=returnEnter(str); applet.append(str); // Send to the printer applet.print(); while (!applet.isDonePrinting()) { // Wait } var e = applet.getException(); if (e == null) var info="Printed Successfully"; else var info="Error: " + e.getLocalizedMessage(); } else { var info="Printer belum siap"; } document.getElementById("printerStatusBar").innerHTML=info; } function returnEnter(dataStr) { return dataStr.replace(/(\r\n|\r|\n)/g, "\n"); }

Dari gambar di atas, tampilan HTML-nya ada yang berupa inputan textarea. Tujuannya adalah untuk mencetak apa yang diketikkan user di dalam textarea tersebut. Ya, ini hanya prototipe sederhana saja agar penggunaan jZebra bisa lebih fleksibel saat dimana halaman HTML terdapat fungsi Javascript yang di-embed ketika sebuah halaman khusus perlu fungdi RAW printing.
Selamat mencoba dan semoga bermanfaat!
Sumber: http://paparadit.blogspot.com/2010/06/raw-printing-from-web-based-application.html
1 Comment
gan boleh minta source code aplikasinya gak??