Bucks
Bucks

Reputation: 687

Printer Availablity

Here i have coded to get a list of devices and i will check each devices status

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

But the problem is each and every time i got a status "Offline" even that printer is Switched on or Switched off

Upvotes: 2

Views: 842

Answers (1)

Padrus
Padrus

Reputation: 2053

I recently had the same problem getting another attribute from a PrintService.

In fact, it always returns null because the method has never been implemented in the Java class, and that's the case for a lot of attributes.

If you really want to get these information, you will have to use the windows Print Spooler DLL or, if your printer is a net printer, query these informations via SNMP.

Upvotes: 1

Related Questions