2013-08-09 25 views
1

안녕하세요,원시 프린터 용지함 ID를 얻는 방법

특정 프린터의 프린터 용지함 ID를 찾으려고합니다. 필자는 PrintService, Media 및 MediaTray를 사용하여 Java에서 많은 기사를 검색하고 발견했습니다. 그러나 이것은 나의 요구 사항에 대한 해결책을 제공하지 못합니다. 아래 코드를 실행하면 다음과 같은 출력이 표시됩니다.

String printName = "AL-M2010-3D8E02"; 
AttributeSet aset = new HashAttributeSet(); 
aset.add(new PrinterName(printName, null)); 
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, aset); 
for (int i = 0; i < services.length; i++) { 
    PrintService service = services[i]; 
    System.out.println(service); 
    DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE; 
    Object o = service.getSupportedAttributeValues(Media.class, flavor, null); 
    if (o != null && o.getClass().isArray()) { 
     for (Media media : (Media[]) o) { 
      if (media instanceof MediaTray) { 
       System.out.println(media + " ID: " + media.getValue() + "\t" + media.getClass().getName()); 
      } 
     } 
    } 
} 

의 Win32 프린터 : AL-M2010-3D8E02

폼 소스 ID : 5 sun.print.Win32MediaTray

ID MP 트레이 : 6 sun.print.Win32MediaTray

하단 카세트 1 ID : 7 sun.print.Win32MediaTray

하위 카세트 2 ID : 8 sun.print.Win32MediaTray

하단 카세트 3 ID : 9 sun.print.Win32MediaTray

하단 카세트 4 ID : 10 sun.print.Win32MediaTray

나는 다음과 같은 outpt을 얻을 것 다음 .NET 코드를 실행하면

.

PrintDocument printDoc = new PrintDocument(); 
printDoc.PrinterSettings.PrinterName = "AL-M2010-3D8E02"; 

for (int i = 0; i < printDoc.PrinterSettings.PaperSources.Count; i++) 
{ 
    trayDetails.AppendText(printDoc.PrinterSettings.PaperSources[i].SourceName + " " + printDoc.PrinterSettings.PaperSources[i].RawKind.ToString()); 
    trayDetails.AppendText(Environment.NewLine); 
} 

자동 15

MP 트레이 261

하단 카세트 1 260

하단 카세트 2 259

하단 카세트 (3) 267

하단 카세트 4 257

선택

위의 내용을 달성하고 싶습니다. 260, 259, 258과 같은 원시 프린터 ID를 얻으려고합니다. Java를 사용하여 7,8,9,10을 얻을 수 있습니다.이 방법이 가능합니까? 사전에

감사합니다,

감사합니다,

CD를 남자 불과 3 개 라인을 추가하려면 위의 코드에

답변

1

. "Win32MediaTray"개체에서 winID 속성을 인쇄하면됩니다.

if (o != null && o.getClass().isArray()) { 
     for (Media media : (Media[]) o) { 
      if (media instanceof MediaTray) { 
       System.out.println(media + " ID: " + media.getValue() + "\t" + media.getClass().getName()); 

       if(media instanceof sun.print.Win32MediaTray){ 
         Win32MediaTray win32Tray = (Win32MediaTray)media; 
         System.out.println(win32Tray.winID); 
        } 

      } 
     } 
    }