2011-04-13 135 views
1

我目前检索与此代码段对可能的媒体托盘一些打印机的信息:打印机介质托盘的名称

Media med[] = (Media[])printService.getSupportedAttributeValues(Media.class, null, null); 
if(med != null) {  
    for (int k=0; k<med.length; k++) { 
      sb.append("Name : " + med[k].getClass() + " - Value : " + med[k].getValue() + 
       " - Name : " + med[k].getName()+"\n"); 
    } 
} 

可悲的是,这只是返回一些盘数字,我觉得这比较没用:

Name : class javax.print.attribute.standard.MediaSizeName - Value : 40 - Name : media 
Name : class javax.print.attribute.standard.MediaSizeName - Value : 41 - Name : media 
Name : class javax.print.attribute.standard.MediaSizeName - Value : 42 - Name : media 
... more ... 
Name : class sun.print.Win32MediaTray - Value : 5 - Name : media 
Name : class sun.print.Win32MediaTray - Value : 25 - Name : media 
Name : class sun.print.Win32MediaTray - Value : 26 - Name : media 
Name : class sun.print.Win32MediaTray - Value : 27 - Name : media 

如何检索有用的名称?

回答

4

这会给你所有的打印机属性,包括托盘名

String printName = "HP Officejet Pro 8500 A910 (Network)"; 
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) { 
     System.out.println(media + " ID: " + media.getValue() + "\t" + media.getClass().getName()); 
    } 
    } 
} 
+0

+1谢谢,这作品! – Daniel 2012-02-22 16:17:47

-2

此代码检索打印机名称,介质托盘名称按大小和ID:

public static void printByName(String printName) { 
//Inicio Codigo PrintByName 
    try{ 
     AttributeSet aset = new HashAttributeSet(); 
     aset.add(new PrinterName(printName, null)); 
    PrintService[] services = PrintServiceLookup.lookupPrintServices(null,aset); 
    MediaSizeName mn=null; 
    MediaSize mz=null; 
    Destination dd=null; 
    for (int i = 0; i < services.length; i++) { 
     PrintService service = services[i]; 
     System.out.println(service); 
     DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE; 
     Class category = Media.class; 
     Object o = service.getSupportedAttributeValues(category, flavor,null); 
     if (o == null) { // Attribute is not supported 
      } 
     else if (o.getClass().isArray()) { 
      // Attribute values are a set of values 
      Media[] media = (Media[]) o; 
      for (int j = 0; j < media.length; j++) { 
       //System.out.println("ATributo: " + media[j].getValue()); 
       if(media[j] instanceof MediaSizeName) { 
       mn=(MediaSizeName)media[j].clone(); 
       //mz=getMediaSizeForName(mn); 
       mz=MediaSize.getMediaSizeForName(mn); 

       //System.out.println((media[j].toString())); 
       System.out.println("\t Bandeja: \t\t"+ mn + " ID: " + mn.getValue()); 
       } 
       } 
      } 
     } 
    //System.exit(0); 
    } catch(Exception e){ 
    System.out.println("Exception is " + e); 
      }  
}