使用Java通过USB直接在Epson Matrix打印机上发送Generic / Text

时间:2009-05-20 03:33:44

标签: java printing usb

有没有办法直接将“ESC”编码的字符串发送到使用Java连接在USB上的Epson Matrix打印机。我已成功使用LPT1端口尝试过这个。但是,我们的大多数客户现在使用的是USB线缆而不是旧的parellel线缆。我遇到的主要问题是如何在Java中打开连接打印机作为输出流的特定USB。提前感谢任何提示和建议。

3 个答案:

答案 0 :(得分:1)

既然你说LPT1,我认为这是针对Windows的。

我没有看到任何100%的Java解决方案,你想要处理硬件

<强> JNI

您可以使用JNI来调用以本机语言(C / C ++ / Delphi)编写的一些导出一个函数SendData的Windows DLL。您可以在临时文件(随机文件名)中准备数据,DLL会将其发送到打印机然后将其删除。

在Java中,您可以使用load和loadlibrary来加载DLL。

使用一些现成的解决方案将其转换为USB / LPT

答案 1 :(得分:1)

article on JSR-80可能会对您有所帮助。看起来它根本不是微不足道的,而且依赖操作系统......

答案 2 :(得分:0)

这是用Java完成的:

PrintService pservice = ... // acquire print service of your printer
DocPrintJob job = pservice.createPrintJob();  
String commands = "";
commands += "\u001B\u0045\u000A"; // plain
commands += "Hello ";
commands += "\u001B\u0045\u000D"; // bold
commands += "ESCP!";
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(commands.getBytes(), flavor, null);
job.print(doc, null);

借鉴:https://stackoverflow.com/a/9309845/3196753

请注意,在某些操作系统上,打印机需要配置为raw/generic print device。对于USB打印机,这通常涉及安装USB驱动程序,然后添加具有相同端口的第二台打印机,但是原始驱动程序或通用驱动程序。