Rabu, 24 April 2013

PHP direct printing to DOT MATRIX printer

Direct printing is still the mainstay for print-scoring affair, especially for programs / POS applications. Because this application requires speed in doing print document .

Sewaktu bermigrasi ke pemrograman  berbasis Web yang paling saya takutkan adalah mendapat project yang mengharuskan  mencetak dalam bentuk STRUK. ternyata benar saya mendapat project  program SPP di salah satu sekolah yang mengharuskan mencetak kedalam struk. Awalnya saya membuatnya dengan Fpdf tetapi ternyata hasil print  jadi kacau dan tidak bisa dibaca.
dan  akhirnya bisa juga mencetak  langung ke printer dari scrip PHP.Ada beberapa tahan supaya kita bisa cetak langsung ke printer. 
1. Sharing dahulu printernya
    misal nama printer LX-300 kemudian sharing dengan nama EPSONLX.
2. Catat IP Address komputer yang terhubung ke printer 
3. Buat perintah seperti dibawah ini  dan simpan di web server misal dengan nama cetak.php:

<?php $tmpdir = sys_get_temp_dir(); # ambil direktori temporary untuk simpan file. $file = tempnam($tmpdir, 'ctk'); # nama file temporary yang akan dicetak $handle = fopen($file, 'w'); $condensed = Chr(27) . Chr(33) . Chr(4); $bold1 = Chr(27) . Chr(69); $bold0 = Chr(27) . Chr(70); $initialized = chr(27).chr(64); $condensed1 = chr(15); $condensed0 = chr(18); $Data = $initialized; $Data .= $condensed1; $Data .= "==========================\n"; $Data .= "| ".$bold1."COBA CETAK".$bold0." |\n"; $Data .= "==========================\n"; $Data .= "INI AKAN DI CETAK\n"; $Data .= "INI AKAN DI CETAK\n"; $Data .= "INI AKAN DI CETAK\n"; $Data .= "INI AKAN DI CETAK\n"; $Data .= "INI AKAN DI CETAK\n"; $Data .= "We Love PHP Indonesia\n"; $Data .= "--------------------------\n"; fwrite($handle, $Data); fclose($handle); copy($file, "//192.168.1.1/EPSONLX"); # Lakukan cetak unlink($file); ?>

4. Coba panggil file php dari browser, maka printer akan langsung mencetak.dan berhenti  ketika script selesai di cetak. Hal ini berbeda jika kita mengunakan pdf yang  akan terus  menggulung kertas  sampai satu lembar.
KETERANGAN PROGRAM:
- mula-mula membuat file temporary
- mengisi file dangan $data.
- copy $data ke alamat printer yang di sharing untuk di cetak

13 komentar:

  1. bagaimana kalau data yg kita ambil untuk dicetak dari database mas..?

    BalasHapus
  2. bagaimana kalo kita mau nge print gambar mas?

    BalasHapus
  3. kalo ngeprin gambar dengan PHP anda harus memakai laporan dalam bentuk PDF....

    BalasHapus
  4. mas.. ini pake php versi berapa??? xampp nya versi berapa??? kalau cetak tabel bisa gak yah??? rata kanan rata kirinya gimana? terimakasih sebelumnya...

    BalasHapus
  5. kalau untuk rata kanan rata kiri bisa di atu manual karena prinsip kerjanya seperti membuat file di PDF

    BalasHapus
  6. script diatas saya coba di localhots tidak jalan mas,ada error

    ( ! ) Warning: copy(//10.153.96.253/EPSONLX) [function.copy]: failed to open stream: Permission denied in C:\wamp\www\test.php on line 25
    Call Stack
    # Time Memory Function Location
    1 0.0341 685888 {main}( ) ..\test.php:0
    2 0.0376 688352 copy ( ) ..\test.php:25

    BalasHapus
  7. saya coba kok error ya
    Warning: copy(//192.168.1.1/EPSONLX) [function.copy]: failed to open stream: No such file or directory in C:\wamp\www\test2.php on line 23

    BalasHapus
    Balasan
    1. Printer tujuan harus sdh di Sharing terlebih dahulu ...

      Hapus
  8. ga bisa mas..

    error :

    Warning: copy(//192.168.2.175/EPSONPLQ2): failed to open stream: No such file or directory in C:\xampp\htdocs\test\test.php on line 25

    BalasHapus
  9. Misal memberi jeda 2 detik kemudian melanjutkan gimana ya ?
    Sebagai contoh, ada 2 nota kemudian antara nota pertama dan kedua ada jeda untuk merobek kertas. Apa ada karakter khusu ?

    BalasHapus
  10. jika tidak ada perintah prin otomatis berhenti

    BalasHapus
  11. iya mas klo dari database gmn tuh, trus
    KETERANGAN PROGRAM:
    - mula-mula membuat file temporary
    - mengisi file dangan $data.
    - copy $data ke alamat printer yang di sharing untuk di cetak
    maksudnya gmn Gan, mohon pencerahannya ke cirebonforum@yahoo.co.id

    BalasHapus