如何将 java 中的字符串打印到 Zebra kr203?
How to print a string from java to a Zebra kr203?
我是自助服务终端打印机的新手。
我需要从 java 应用程序向 Zebra kr203 自助服务终端打印机发送一个字符串。
机器连接到 windows 7 电脑并安装了驱动程序。打印测试页正常。
我还安装了打印机的设置实用程序,它们允许通过 EPL2 语言向打印机发送命令。同样,我完全是 EPL2 的新手,但我尝试了一些示例命令但没有任何效果。
有人可以写一些基本的 java 代码来向打印机发送一个短字符串吗?
不需要 GUI 只需要一个简单的命令行应用程序。
编辑:我在 google 上找到了一些代码,可以获取正确的 printService 但它仍然无法打印任何内容。
编辑编号2:我最终使用了他们网站上提供的 Zebra SDK。他们在那里保留代码示例,您可以通过谷歌搜索轻松找到这些示例。我把旧代码删掉了,因为它没用。
使用 SDK 和示例我发现打印机实际上使用的是 ZPL2 而不是我最初认为的 EPL。
SDK 有自己的 API 用于发送命令,它对我来说非常流畅。
您有多台打印机可供选择...还是只有一台打印机?
private void printLabel() {
try{
FileOutputStream fos = new FileOutputStream("\Your Printer Here");
PrintStream ps = new PrintStream(fos);
//try with the EPL commands or take a look at the ZPL programming guide
String commands = "N\n" +
"A50,50,0,2,2,2,N,\"" + label + "\"\n" +
"B50,100,0,1,2,2,170,B,\"" + label + "\"\n" +
"A50,310,0,3,1,1,N,\"" + czas + "\"\n" +
"P1\n";
ps.println(commands);
ps.print("\f");
ps.flush();
ps.close();
}catch(Exception e){
e.printStackTrace();
}
}
`
这是我最终使用的:
String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
com.zebra.sdk.comm.Connection myconnection = new com.zebra.sdk.comm.DriverPrinterConnection(defaultPrinter,1000,1000);
myconnection.open();
com.zebra.sdk.printer.ZebraPrinter myprinter = ZebraPrinterFactory.getInstance(myconnection);
String command = "^XA\n" +
"^FO50,50\n" +
"^A@N,20,20,E:TT0003M_.FNT\n" +
"^FDUplatili ste XXXX na račun XXXXXXXXXX^FS\n" +
"^FO50,150\n" +
"^A0,32,25\n" +
"^FD"+ date.toString()+ "^FS\n" +
"^FO50,250\n" +
"^A0,32,25^FDSlavnoska Avenija 19, 10000 Zagreb^FS\n" +
"^XZ";
myprinter.sendCommand(command);
myconnection.close();
我是自助服务终端打印机的新手。
我需要从 java 应用程序向 Zebra kr203 自助服务终端打印机发送一个字符串。
机器连接到 windows 7 电脑并安装了驱动程序。打印测试页正常。
我还安装了打印机的设置实用程序,它们允许通过 EPL2 语言向打印机发送命令。同样,我完全是 EPL2 的新手,但我尝试了一些示例命令但没有任何效果。
有人可以写一些基本的 java 代码来向打印机发送一个短字符串吗?
不需要 GUI 只需要一个简单的命令行应用程序。
编辑:我在 google 上找到了一些代码,可以获取正确的 printService 但它仍然无法打印任何内容。
编辑编号2:我最终使用了他们网站上提供的 Zebra SDK。他们在那里保留代码示例,您可以通过谷歌搜索轻松找到这些示例。我把旧代码删掉了,因为它没用。
使用 SDK 和示例我发现打印机实际上使用的是 ZPL2 而不是我最初认为的 EPL。
SDK 有自己的 API 用于发送命令,它对我来说非常流畅。
您有多台打印机可供选择...还是只有一台打印机?
private void printLabel() {
try{
FileOutputStream fos = new FileOutputStream("\Your Printer Here");
PrintStream ps = new PrintStream(fos);
//try with the EPL commands or take a look at the ZPL programming guide
String commands = "N\n" +
"A50,50,0,2,2,2,N,\"" + label + "\"\n" +
"B50,100,0,1,2,2,170,B,\"" + label + "\"\n" +
"A50,310,0,3,1,1,N,\"" + czas + "\"\n" +
"P1\n";
ps.println(commands);
ps.print("\f");
ps.flush();
ps.close();
}catch(Exception e){
e.printStackTrace();
}
} `
这是我最终使用的:
String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
com.zebra.sdk.comm.Connection myconnection = new com.zebra.sdk.comm.DriverPrinterConnection(defaultPrinter,1000,1000);
myconnection.open();
com.zebra.sdk.printer.ZebraPrinter myprinter = ZebraPrinterFactory.getInstance(myconnection);
String command = "^XA\n" +
"^FO50,50\n" +
"^A@N,20,20,E:TT0003M_.FNT\n" +
"^FDUplatili ste XXXX na račun XXXXXXXXXX^FS\n" +
"^FO50,150\n" +
"^A0,32,25\n" +
"^FD"+ date.toString()+ "^FS\n" +
"^FO50,250\n" +
"^A0,32,25^FDSlavnoska Avenija 19, 10000 Zagreb^FS\n" +
"^XZ";
myprinter.sendCommand(command);
myconnection.close();