Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java知道打印机名称(不是默认的打印机名称)?_Java - Fatal编程技术网

如何使用java知道打印机名称(不是默认的打印机名称)?

如何使用java知道打印机名称(不是默认的打印机名称)?,java,Java,我在同一端口号上添加了两台打印机(使用理光通用打印机驱动程序),工作正常。我编写了一个java程序从套接字读取流并写入postscript文件。由于我在同一端口上运行两台打印机,我可以通过两台打印机打印文件。但我的问题是,我如何知道打印/流来自哪个打印机? 我知道我们可以得到默认的打印机名称,如下所示 PrintServiceLookup.lookupDefaultPrintService() } 使用上面的代码获取打印机列表,然后检查每个打印机的状态,若它在作业中忙,那个么您的流来自该打印机

我在同一端口号上添加了两台打印机(使用理光通用打印机驱动程序),工作正常。我编写了一个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 
}