如何使用java知道打印机名称(不是默认的打印机名称)?
我在同一端口号上添加了两台打印机(使用理光通用打印机驱动程序),工作正常。我编写了一个java程序从套接字读取流并写入postscript文件。由于我在同一端口上运行两台打印机,我可以通过两台打印机打印文件。但我的问题是,我如何知道打印/流来自哪个打印机? 我知道我们可以得到默认的打印机名称,如下所示 PrintServiceLookup.lookupDefaultPrintService() } 使用上面的代码获取打印机列表,然后检查每个打印机的状态,若它在作业中忙,那个么您的流来自该打印机如何使用java知道打印机名称(不是默认的打印机名称)?,java,Java,我在同一端口号上添加了两台打印机(使用理光通用打印机驱动程序),工作正常。我编写了一个java程序从套接字读取流并写入postscript文件。由于我在同一端口上运行两台打印机,我可以通过两台打印机打印文件。但我的问题是,我如何知道打印/流来自哪个打印机? 我知道我们可以得到默认的打印机名称,如下所示 PrintServiceLookup.lookupDefaultPrintService() } 使用上面的代码获取打印机列表,然后检查每个打印机的状态,若它在作业中忙,那个么您的流来自该打印机
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
AttributeSet attributes = printService.getAttributes();
String printerState = attributes.get(PrinterState.class).toString();
String printerStateReason = attributes.get(PrinterStateReason.class).toString();
System.out.println("printerState = " + printerState);
if(printerState.equals(javax.print.attribute.standard.PrinterState.PROCESSING)){
//this is printer from where stream is coming
}
谢谢你的回复。如果一台打印机中有打印队列等待打印,而另一台打印机正在打印当前文件,那么我们怎么知道?这是关键,您的打印机状态将标记为“忙”而不是“等待”
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
AttributeSet attributes = printService.getAttributes();
String printerState = attributes.get(PrinterState.class).toString();
String printerStateReason = attributes.get(PrinterStateReason.class).toString();
System.out.println("printerState = " + printerState);
if(printerState.equals(javax.print.attribute.standard.PrinterState.PROCESSING)){
//this is printer from where stream is coming
}