Skip to content

Instantly share code, notes, and snippets.

@endymuhardin
Created September 30, 2011 02:04
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save endymuhardin/1252478 to your computer and use it in GitHub Desktop.
Save endymuhardin/1252478 to your computer and use it in GitHub Desktop.
Contoh Direct Print dengan Java
LAPORAN DAFTAR PELUNASAN KOLETKOR
AGEN PT. ARTIVISI INTERMEDIA
=====================================================================================================================
KODE KOLEKTOR : 0001
NAMA KOLEKTOR : JOJO
+------+--------------+---------------------------+---------+-------------+-------------+-------------+-------------+
| NO | IDPEL | NAMA PELANGGAN | BLN/TH | RP. BK | RP. ADM | RP.TAG | RP. TOTAL |
+------+--------------+---------------------------+---------+-------------+-------------+-------------+-------------+
| 1|518011796990 | KH. IMAM QOARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 2|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 3|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 4|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 5|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 6|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 7|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 8|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 9|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 10|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 11|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 12|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 13|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 14|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 15|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 16|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 17|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 18|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 19|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
| 20|518011796990 | KH. IMAM QOMARUDDIN | 06/2011 | 3.000 | 1,600 | 98,000,000 | 98,004,600 |
+-----------------------------------------------------------+-------------+-------------+-------------+-------------+
| $totalPel Pelanggan | $totalBk | $totalAdm | $totalTag | $totalTotal |
+-----------------------------------------------------------+-------------+-------------+-------------+-------------+
TOTAL PELANGGAN : $totalPel Pelanggan
TOTAL RP. BK : Rp. $totalBk
TOTAL RP. ADM : Rp. $totalAdm
TOTAL RP. TAG : Rp. $totalTag
SUB TOTAL : Rp. $totalTotal
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
/**
* Demonstrasi cara mencetak struk dengan printer dot matrix.
*
* Pada contoh kode berikut, kita mencetak langsung ke device printer,
* tidak melalui print service Operating System (print dialog).
*
* Sebelum menjalankan contoh kode berikut,
* pastikan Anda bisa mencetak langsung melalui command prompt.
*
* Contoh : di linux menggunakan printer paralel
* <pre><code>
* echo "Hello World" > /dev/lp0
* </code></pre>
*
* Bila Anda mendapatkan pesan error, biasanya karena hal berikut :
* <ul>
* <li>Salah menggunakan nama device. <br />
* Pastikan device /dev/lp0 adalah nama device yang benar.<br />
* Biasanya terjadi kesalahan di sini bila menggunakan printer USB.
* </li>
* <li>Permission user tidak memadai. <br />
* Setelah memastikan Anda menggunakan device yang benar,
* periksa permissionnya. <br />
* Di instalasi Ubuntu standar, /dev/lp0 memiliki permission 660
* dengan owner root dan group lp. <br />
* Pastikan user yang digunakan adalah root,
* atau user biasa yang tergabung ke dalam grup lp
* </li>
* </ul>
*
* @author endy at artivisi dot com
*/
public class Main {
private static final char ESC = (char) 27;
// ganti kertas
private static final char[] FORM_FEED = {(char) 12};
// reset setting
private static final char[] RESET = {ESC,'@'};
// huruf tebal diaktifkan
private static final char[] BOLD_ON = {ESC,'E'};
// huruf tebal dimatikan
private static final char[] BOLD_OFF = {ESC,'F'};
// huruf miring diaktifkan
private static final char[] ITALIC_ON = {ESC,'4'};
// huruf miring dimatikan
private static final char[] ITALIC_OFF = {ESC,'5'};
// mode draft diaktifkan
private static final char[] MODE_DRAFT = {ESC,'x',0};
private static final char[] MODE_NLQ = {ESC,'x',1};
// font Roman (halaman 47)
private static final char[] FONT_ROMAN = {ESC,'k',0};
// font Sans serif
private static final char[] FONT_SANS_SERIF = {ESC,'k',1};
// font size (halaman 49)
private static final char[] SIZE_5_CPI = {ESC,'W','1',ESC,'P'};
private static final char[] SIZE_6_CPI = {ESC,'W','1',ESC,'M'};
private static final char[] SIZE_10_CPI = {ESC,'P'};
private static final char[] SIZE_12_CPI = {ESC,'M'};
//font height
private static final char[] HEIGHT_NORMAL = {ESC,'w', '0'};
private static final char[] HEIGHT_DOUBLE = {ESC,'w', '1'};
// double strike (satu dot dicetak 2 kali)
private static final char[] DOUBLE_STRIKE_ON = {ESC,'G'};
private static final char[] DOUBLE_STRIKE_OFF = {ESC,'H'};
// http://www.berklix.com/~jhs/standards/escapes.epson
// condensed (huruf kurus)
private static final char[] CONDENSED_ON = {(char) 15};
private static final char[] CONDENSED_OFF = {(char) 18};
// condensed (huruf gemuk)
private static final char[] ENLARGED_ON = {(char) 14};
private static final char[] ENLARGED_OFF = {(char) 20};
// line spacing
private static final char[] SPACING_9_72 = {ESC, '0'};
private static final char[] SPACING_7_72 = {ESC, '1'};
private static final char[] SPACING_12_72 = {ESC, '2'};
// set unit for margin setting
private static final char[] UNIT_1_360 = {ESC, (char)40, 'U', '1', '0'};
// move vertical print position
private static final char[] VERTICAL_PRINT_POSITION = {ESC, 'J', '1'};
public static void main(String[] args) throws IOException {
//String printer = "/dev/lp0"; // Linux
String printer = "/dev/usb/lp0"; // Windows
String message = "Hello World";
// buat writernya
FileWriter writer = new FileWriter(printer);
/*
// set unit 1/3600
writer.write(ESC);
writer.write((char)40);
writer.write('U');
writer.write(1);
writer.write(0);
writer.write(1);
// ESC ( c 4 0 Set page length
writer.write(ESC);
writer.write((char)40);
writer.write('c');
writer.write(4);
writer.write(0);
writer.write(1); //TH
writer.write(100); //TL
writer.write(37); //BH
writer.write(425); //BL
*/
// set page length 22
writer.write(ESC);
writer.write('C');
writer.write(23);
cetakStruk("Draft Sans Serif Condensed", writer,
MODE_DRAFT,
FONT_SANS_SERIF,
CONDENSED_ON,
SIZE_10_CPI,
SPACING_12_72);
sendCommand(RESET, writer);
writer.close();
}
public static void sendCommand(char[] command, Writer writer) throws IOException {
writer.write(command);
}
private static void cetakStruk(String title, FileWriter writer, char[]... mode) throws IOException {
sendCommand(RESET, writer);
for (int i = 0; i < mode.length; i++) {
char[] cmd = mode[i];
sendCommand(cmd, writer);
}
cetakStruk(title,writer);
sendCommand(VERTICAL_PRINT_POSITION, writer);
}
private static void cetakStruk(String title, FileWriter writer) throws FileNotFoundException, IOException {
String strukFile = "LaporanTagihan.txt";
BufferedReader reader = new BufferedReader(new FileReader(strukFile));
String content = "";
while((content = reader.readLine()) != null) {
writer.write(content);
gantiBaris(writer);
}
reader.close();
}
private static void gantiBaris(Writer writer) throws IOException {
writer.write("\n");
}
}
@nachmadi
Copy link

nachmadi commented Dec 6, 2011

mas endy klo lewat web apakah bisa diimplementasikan pake aplet ya..???

@achmad
Copy link

achmad commented Jun 29, 2012

Mas endy , kalo ingin mendapatkan port printer yang terhubung dengan komputer kita bagaimana mas ya ?

@endymuhardin
Copy link
Author

endymuhardin commented Jun 29, 2012 via email

@mucasali
Copy link

Mas Endy, aku copy pas sintak itu og error ya /dev/usb/lp0 tidak ditemukan...
dan kalo printer itu saya isi dengan nama printnya String pronter="Epson LX-310"; g ada eror, tapi printnya g jalan sama sekali..??? tolong dijawab ya ...

@endymuhardin
Copy link
Author

/dev/usb/lp0 itu untuk Linux dan printer USB.
Kalau pakai sistem operasi lain dan jenis printer lain saya kurang tau juga.
Coba kasi tau OS dan koneksi printer yang digunakan, nanti saya bantu cari

@dendi
Copy link

dendi commented Sep 19, 2014

om bisa share contoh lainnya buat cetak faktur ini mas ?
mksih,salam kenal

@endymuhardin
Copy link
Author

Contoh lain yang kayak gimana? Memang yang ini kurang jelas di mananya?

@wandiapriliyandi
Copy link

mas endy, sy mengset seperti ini,
String printer = "EPSON L220 Series"; // WindowsXP printerUSB
tidak muncul error tapi tidak ada aksi di printer...

@gedesukra
Copy link

Halo salam kenal.
Saya coba membantu bagi yang bingung untuk setting printer name di dotmatrix epson.

String printer = "/dev/usb/lp0";

ini bisa dibuat dinamis dengan cara

  1. Setting default printer mengarah ke printer dotmatrix nya (pastikan driver printer sudah terinstall). Jika di windows bisa memakai control panel. Di Linux melalui menu setting -> printer.
  2. Dapatkan nama default printer nya terlebih melalui class PrintServiceLookup. Nama ini bisa berupa path/uri ke printer tersebut jika memakai jaringan LAN atau nama saja jika printer langsung terkoneksi dengan komputer. (Note biasanya utk printer LAN di linux perlu komponen CUPS )

Contohnya :
Windows:

 import javax.print.PrintServiceLookup;
 ......

 private String getDefaultPrinter() {
    String defaultPrinter = "default";
    try {
        defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
        if (defaultPrinter.indexOf("\\\\") == -1) {
            String[] newPrinter = defaultPrinter.split("_");
            defaultPrinter = newPrinter.length == 2 ? "\\\\" + newPrinter[0] + "\\" + newPrinter[1] : "\\\\" + this.getLocalIp() + "\\" + defaultPrinter;
        }
    }
    catch (Exception e) {
        defaultPrinter = "\\\\" + this.getLocalIp() + "\\" + defaultPrinter;
    }
    return defaultPrinter;
}

private String getLocalIp() {
    String ip_str = "127.0.0.1";
    try {
        InetAddress ip = InetAddress.getLocalHost();
        ip_str = ip.getHostAddress();
    }
    catch (UnknownHostException e) {
        e.printStackTrace();
    }
    return ip_str;
}

Linux:

import javax.print.PrintServiceLookup;
..........

private String getDefaultPrinter() {
String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
return defaultPrinter;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment