Created
September 30, 2011 02:04
-
-
Save endymuhardin/1252478 to your computer and use it in GitHub Desktop.
Contoh Direct Print dengan Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"); | |
} | |
} |
Contoh lain yang kayak gimana? Memang yang ini kurang jelas di mananya?
mas endy, sy mengset seperti ini,
String printer = "EPSON L220 Series"; // WindowsXP printerUSB
tidak muncul error tapi tidak ada aksi di printer...
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
- 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.
- 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
om bisa share contoh lainnya buat cetak faktur ini mas ?
mksih,salam kenal