我目前使用以下代码片段检索有关可能介质托盘的打印机信息:
很遗憾,这只是返回一些托盘号码,我觉得相对没什么用处。
如何获取有用的名称?
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
如何获取有用的名称?
media.toString()
(这是你在println中所做的)提供了一个“有用”的名称;必须区分MediaTray
类,它表示实际的托盘,和MediaSizeName
类,它表示媒体尺寸。这些不能作为getSupportedAttributeValues()
的类参数使用,仍然需要使用Media.class
。真是太麻烦了。 - Tilman Hausherr