打印机可用性

时间:2012-10-13 08:31:27

标签: java

在这里,我已编码获取设备列表,我将检查每个设备状态

DocFlavor myFormat = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services =PrintServiceLookup.lookupPrintServices(myFormat, aset);
System.out.println("The following printers are available");
for (int i=0;i<services.length;i++) {
    PrintService printService = services[i];
    PrintServiceAttributeSet printServiceAttributes = printService.getAttributes();
    PrinterState printerState = 
                      (PrinterState)printServiceAttributes.get(PrinterState.class);
    if (printerState != null){
            System.out.println(services[i].getName() + " is online");
    } else {
            System.out.println(services[i].getName() + " is offline");
    }
}

但问题是每次我都获得“离线”状态,即使打印机已开启或关闭

1 个答案:

答案 0 :(得分:1)

我最近遇到了从PrintService获取另一个属性的相同问题。

实际上,它总是返回null,因为该方法从未在Java类中实现过,而且很多属性都是如此。

如果您真的想获取这些信息,则必须使用Windows Print Spooler DLL,或者,如果您的打印机是网络打印机,则通过SNMP查询这些信息。