java - 打印机可用性

标签 java

这里我已经编码以获取设备列表,我将检查每个设备的状态

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

但问题是每次我都得到“离线”状态,即使打印机是打开或关闭的

最佳答案

我最近在从 PrintService 获取另一个属性时遇到了同样的问题。

事实上,它总是返回 null,因为该方法从未在 Java 类中实现过,很多属性都是这种情况。

如果你真的想得到这些信息,你将不得不使用 windows Print Spooler DLL,或者,如果你的打印机是网络打印机,通过 SNMP 查询这些信息。

关于java - 打印机可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12871396/

相关文章:

java - Spring mvc静态资源配置问题

java - 如何在 Samsung SmartThings 应用程序中实现设备和传感器的类?

java - java中是否有任何东西可以注释掉从未使用过的代码,从而改变代码的运行方式?比如 C/C++ 内存泄漏?

java - 将 spring boot jar 转换为 war

java - 如何在 JTextField 中显示淡灰色 "ghost text"?

Java KeyEvent - 键代码与扩展键代码

java - 条件 JIT 编译

java - 在使用 Selenium WebDriver 和 Java 时,我无法使用 WebDriver 的 click() 函数(也不异常(exception))

java - 像 DBMS 一样快速计算笛卡尔积

java - 为什么方法在语句之后需要一个始终返回 true 的返回值?