Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Print Direct Jzebra - JAVA

Pada kasus print direct ini saya menggunakan jzebra sebagai mediasi print, nah biasanya print dierct itu saya gunakan untuk print report sebuah bukti invoice atau yg lainnya, kemudian saya membuat fasilitas agar bisa print dari dok a s.d z, nah untuk alur koding sendiri sudah benar tetapi ketika print hasilnya itu ada beberapa dokumen yg double ke cetak , contoh :
print dokumen 001 s.d 005
yg ke print :
001 , 001, 002, 003, 003
nah hasil dokumen sesuai tapi isi report tidak sesuai.
saya sudah mencoba dengan cara ini :
1. Disable cache pada java configuration: http://cyclic.ucsd.edu/javafiles.html
2. Menambahkan <param name="cache_option" value="no"> setelah <param name="printer" value="zebra">
3. Menambahkan applet.clear(); setelah printing
Mohon bantuannya ya Master2 ..
Thx.
Farhan Rifai

Comments

  • lebih cenderung buat memeriksa koding buat menyusun report nya
  •             var strUrl = Rich.config.penjualan + 'jual/customComboReport/?dokumenAwal=' + dokumenAwal + '&dokumenAkhir=' + dokumenAkhir;
    var cekDokumen = Ext.create('Ext.data.Store', {
    model: 'Rich.model.penjualan.JualModel',
    proxy: {
    type: 'ajax',
    _extraParams: null,
    url: strUrl,
    reader: {
    type: 'json',
    root: 'content',
    totalProperty: 'totalElements'
    }
    },
    setExtraParams: function (extraParams) {
    var self = this;
    if (Ext.isEmpty(extraParams)) {
    self._extraParams = null;
    } else {
    self._extraParams = extraParams;
    }
     
    },
    clearExtraParams: function () {
    var self = this;
    self._deletedParams = self._extraParams;
    self._extraParams = null;
    }
    });
     
    cekDokumen.load(function (data) {
     
     
    var count = 0;
    Ext.each(cekDokumen.data.items, function (item) {
     
    var dokumenSuratJalan = item.data.dokumen;
    self._printDirect(dokumenSuratJalan, userLogin, count);
    count++;
    console.info("DOKUMEN SJ " + dokumenSuratJalan)
     
     
    });
     
     
    });
     
     
     
    //------------------------------------------------------------------------------------------------------
    _printDirect: function(dok, user, count) {
     
    var applet = document.jzebra;
    applet.findPrinter();
    applet.append(String.fromCharCode(15)); //condensed font
     
    var urlBukti = Rich.config.inventori + 'report/suratJalanBukti/buktiDraft.txt?dokumen=' + dok + '&userLogin=' + user;
     
    // PRINT DIRECT TO PRINTER
    Ext.Ajax.request({
     
    url: urlBukti ,
    // url: Rich.config.inventori + 'report/suratJalanBukti/buktiDraft.txt?dokumen=' + dok + '&userLogin=' + user ,
     
    success: function (response) {
     
    var data = response.responseText;
     
    var title = "SURAT JALAN (JL)";
     
    var nomor = "NO : ";
    var noDok = dok;
     
    var title2 = String.fromCharCode(27) + String.fromCharCode(69) + String.fromCharCode(14) + title + String.fromCharCode(27) + String.fromCharCode(70);
    var nomor2 = String.fromCharCode(27) + String.fromCharCode(69) + nomor + String.fromCharCode(27) + String.fromCharCode(70);
    var noDok2 = String.fromCharCode(27) + String.fromCharCode(69) + noDok + String.fromCharCode(27) + String.fromCharCode(70);
     
    var kata = "NETTO : ";
    var awal = data.search(kata);
    var total = data.substr(awal, 54);
    var total2 = String.fromCharCode(27) + String.fromCharCode(69) + total + String.fromCharCode(27) + String.fromCharCode(70);
     
    var data = data.replace(title, title2, "g").replace(nomor, nomor2, "g").replace(noDok, noDok2, "g").replace(total, total2, "g");
    applet.append(data);
    }
    });
     
    console.info("CEK COUNT= ", count);
    applet.print();
    applet.clear();
    }
  • itu salah satu kodingnya, mohon bantuannya master paus.
    thx.
  • edited April 2014
    sebelum ini :
    Ext.each(cekDokumen.data.items, function (item) {

    coba elo cek dulu isi : cekDokumen.data.items ... bisa pake alert() nya js
    urut ?
    atau rangkap ?



    kayanya gw agak bisa nebak
    tapi kalo ini beneran sama lho ya ...

    .items di js itu kalo kagak salah, isinya 2 jenis
    ada yg pake index angka <- biasanya yg gw baca yg ini, soalnya testing nya gampang, "hanya yg index nya angka, selain angka abaikan"
    ada yg index nya berupa string / object, isinya macam-macam, index nya juga macam-macam

    kalo elo hanya baca seluruh isi array .items pake each()
    dan kagak ada pemeriksaan jenis index nya
    yg kebaca baik yg pake index angka maupun yg tidak
    kemungkinan dobel dari situ
  • gua udah cek , kalo buat yg isi dari cekDokumen.data.items nya itu "urut".
    nah kalo buat pengecekan jenis index itu pake string .
  • pake string itu karena saya butuhin nomor dokumen itu buat di
    Rich.config.inventori + 'report/suratJalanBukti/buktiDraft.txt?dokumen=' + dok + '&userLogin=' + user
    Ext.each(cekDokumen.data.items, function (item) {
    var dokumenSuratJalan = item.data.dokumen;
    }


    gitu master paus. :)
  • nah solusinya gimana ya biar ga dobel2 hasil printnya ?
    harus di perbaiki di baca data dari arraynya atau gimana master paus ?
  • gua udah cek , kalo buat yg isi dari cekDokumen.data.items nya itu "urut".
    nah kalo buat pengecekan jenis index itu pake string .
    elo periksanya pake apa ?
    kalo pake alert, berapa kali popup alert nya muncul ?
  • periksa pake alert master paus.
    ane cek dokumen 001 sampe 005 , nah alert keluar 5 x.
    001,002,003,004,005

    gitu master paus..
  • berarti bener, secara data emang cuma 5x, tanpa ada yg rangkap ?
  • tidak ada yg rangkap master paus.
    setelah saya coba periksa pakai alert data dokumen yg muncul pada alert juga sudah berurut, tetapi ketika saya print hasilnya masih ada dokumen yg double2.
    saya pake OS : Ubuntu , Browser Chrome dan Plugin IcedTea-Web Plugin (using IcedTea-Web 1.2 (1.2-2ubuntu1)) .
  • coba elo ubah ini :

    self._printDirect(dokumenSuratJalan, userLogin, count);
    count++;

    jadi :

    self._printDirect(dokumenSuratJalan, userLogin, count++);
  • oke master paus.
    tapi untuk count ini saya sebelumnya hanya untuk cek saja berapa dokumen sebenarnya yang terbaca.

    oh iya saya mau tanya master paus,
    pernah pakai appendFile() kah ?
  • appendFile() ini fungsi / method dimana ?

    framework / librari javascript kah ?
    atau java nya ?
  • nah untuk fungsi / methodnya sendiri saya juga belum coba, tapi saya coba browsing dan kebanyakan orang pakai appendFile() ini untuk menampung data dari program yang nantinya akan dikirim ke printer.
    buat contoh :

    var dataSaya = String.fromCharCode(27) + String.fromCharCode(69) + "TEST PRINT JZEBRA" + String.fromCharCode(27) + String.fromCharCode(70);

    applet.append(dataSaya);
    applet.print();

    kalo yg saya lihat appendFile() ini library javascript nya master paus.
    cuma saya belum pernah pake appendFile() ini, dan pas saya coba pakai juga di library tidak ada.
    saya dapat referensi dari sini mater paus :
    https://code.google.com/p/jzebra/issues/detail?id=96
  • master paus, kalo mau cek versi jzebra itu gimana ya caranya ?
  • edited April 2014
    coba dah ...

    bagian ini :

    console.info("CEK COUNT= ", count);
    applet.print();
    applet.clear();

    elo pindah ke dalam

    success: function (response) {
    ...
    ...
    }

    di bawah baris :

    var data = data.replace(title, title2, "g").replace(nomor, nomor2, "g").replace(noDok, noDok2, "g").replace(total, total2, "g");
    applet.append(data);

    jadi, hanya di cetak setelah data sukses di load doang ...
  • oke master paus dicoba dulu yak.
    terimakasih banyak master paus.
  • master paus, saya udah cobain perintah aplet ada di dalem :
    success: function (response) {
    ...
    ...
    }
    tapi malah ga berfungsi perintah printnya ,
    thx master paus
  • koding elo lengkapnya jadi kaya apa ?
  • untuk proses print sih cuma itu aja master paus, mainnya di javascript buat eksekusi jzebranya.
  • kan ada perubahan yg terakhir di atas,
    gw mau liat elo ubah spt apa
  • <pre lang="javascript">

    _printDirect: function(dok, user, count) {
     
    var applet = document.jzebra;
    applet.findPrinter();
    applet.append(String.fromCharCode(15)); //condensed font
    var strUrl = Rich.config.inventori + 'report/suratJalanBukti/buktiDraft.txt?dokumen=' + dok + '&amp;userLogin=' + user;
    // PRINT DIRECT TO PRINTER
    Ext.Ajax.request({
     
    url: strUrl ,
     
    success: function (response) {
     
    console.info("DOKUMEN SJ = " + dok);
     
    var dataText = response.responseText;
     
    var title = "SURAT JALAN (JL)";
     
    var nomor = "NO : ";
    var noDok = dok;
     
    var title2 = String.fromCharCode(27) + String.fromCharCode(69) + String.fromCharCode(14) + title + String.fromCharCode(27) + String.fromCharCode(70);
    var nomor2 = String.fromCharCode(27) + String.fromCharCode(69) + nomor + String.fromCharCode(27) + String.fromCharCode(70);
    var noDok2 = String.fromCharCode(27) + String.fromCharCode(69) + noDok + String.fromCharCode(27) + String.fromCharCode(70);
     
    var kata = "NETTO : ";
    var awal = dataText.search(kata);
    var total = dataText.substr(awal, 54);
    var total2 = String.fromCharCode(27) + String.fromCharCode(69) + total + String.fromCharCode(27) + String.fromCharCode(70);
     
    var data = dataText.replace(title, title2, "g").replace(nomor, nomor2, "g").replace(noDok, noDok2, "g").replace(total, total2, "g");
    applet.append(data);
    applet.print();
    applet.clear();
    }
    });
    <br>
    &lt;/pre&gt;
  • hasil :
    console.info("DOKUMEN SJ = " + dok);

    ada ?
  • ada, hasilnya sesuai dokumen yang mau dicetak.
    saya tahu jelas ini ketika di console itu dokumen tercetak sudah sesuai, tetapi ketika print itu hasil jadi tidak sesuai ada dokumen yang tercetak double dan sebagian dokumen malah tidak tercetak.
  • edited April 2014
    ini ada kemungkinan alur yg elo jalankan begini :

    saat request data via ajax, pasti ada proses di server sebelum client menerima respon dari server
    proses itu pasti ada delay waktu proses
    nah, kondisi semula, elo print diluar kondisi success
    artinya, kagak menunggu data selesai diterima -> langsung di print
    jadinya data sebelumnya bisa kejadian yg di print (data baru belum diterima)

    makanya gw bilang, dicoba printah print dimasukan ke dalam success
    supaya saat beneran data sudah diterima baru di print

    feeling gw ini beneran masalah alur
    dan, gw masih melihat kemungkinan alur tumpang tindih

    coba buat selingan, baca ini :
    http://www.diskusiweb.com/discussion/comment/261891#Comment_261891
    itu masalah bentuk request ajax supaya berurut
    pakenya php, cuma sekedar buat contoh request

    mungkin model elo bisa pake model yg nomer [4] supaya kagak tumpang tindih

    alur baru elo jadi :
    [a] loop each(), panggil fungsi yg me-request via ajax sekaligus print()
    [b] tunggu data selesai diterima -> print()
    [c] jika ada request baru sementara proses belum selesai -> tampung dulu di array request
    [d] jika data selesai diterima dan di print() -> jalankan request berikut, balik no [b], sampai isi array request habis

    atau elo pake model [1], request elo pake mode synchronous
Sign In or Register to comment.