2012-10-13 2 views
2
다음

나는 장치의 목록을 얻기 위해 코딩하고 난 각 장치의 상태프린터에서만 서비스 제공

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"); 
    } 
} 

을 확인합니다 그러나 문제는 심지어 프린터의 전원이 켜져 난 상태 "오프라인"을 가지고 각각의 모든 시간 또는 스위치 OFF

+0

printerState는 오프라인 일 때 null이 될 것이라고 확신합니까? – banjara

+0

예 프린터의 전원을 켜고 껐을 때 null을 반환합니다. – Bucks

답변

1

최근에 PrintService에서 다른 속성을 가져 오는 데 동일한 문제가 발생했습니다.

실제로 Java 클래스에서이 메서드를 구현 한 적이 없으므로 항상 null을 반환합니다. 많은 특성에 해당합니다.

이 정보를 실제로 얻으려면 Windows 인쇄 스풀러 DLL을 사용해야하거나 프린터가 네트워크 프린터 인 경우 SNMP를 통해 이러한 정보를 쿼리해야합니다.

관련 문제