Java 如何获取原始打印机托盘ID
我正在尝试查找特定打印机的打印机托盘ID。我使用Java 如何获取原始打印机托盘ID,java,printing,tray,Java,Printing,Tray,我正在尝试查找特定打印机的打印机托盘ID。我使用PrintService、媒体和MediaTray在Java中搜索并找到了很多文章。然而,这并不能满足我的需求。如果运行下面的代码,我将获得以下输出 String printName = "AL-M2010-3D8E02"; AttributeSet aset = new HashAttributeSet(); aset.add(new PrinterName(printName, null)); PrintService[] services =
PrintService
、媒体和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());
}
}
}
}
String printName=“AL-M2010-3D8E02”;
AttributeSet aset=新的HashAttributeSet();
aset.add(新的PrinterName(printName,null));
PrintService[]services=PrintServiceLookup.lookupPrintServices(null,aset);
for(int i=0;i
Win32打印机:AL-M2010-3D8E02
表单源ID:5 sun.print.Win32MediaTray
MP托盘ID: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
如果我运行以下.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);
}
PrintDocument printDoc=新的PrintDocument();
printDoc.PrinterSettings.PrinterName=“AL-M2010-3D8E02”;
对于(int i=0;i
自动选择15
MP托盘261
下磁带1260
下卡式磁带2259
下盒式磁带3258
下盒式磁带4257
以上就是我想要实现的。我想通过Java获得原始打印机ID,比如260、259、258等等,而不是7、8、9和10。这在某种程度上是可能的吗?只需在上面的代码中再添加3行即可。您只需从“Win32MediaTray”对象打印winID属性
只需在上面的代码中再添加3行即可。您只需从“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);
}
}
}
}