Why is PrinterState always null?

I need more control of my printer, and then I try to get a PrinterState of my printer, and then use PrintStareReasons. My code is as follows:

public void checkPrinterStatus(){ try { logger.info("Check -------------- "); Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } PrintService printer = configParamPrintService.getPrintService(); logger.info("State " + printer.isAttributeCategorySupported(PrinterState.class)); Set<Attribute> attributes = getAttributes(printer); for(Attribute attr : attributes){ logger.info(attr.getName()); } } public static Set<Attribute> getAttributes(PrintService printer) { Set<Attribute> set = new LinkedHashSet<Attribute>(); //get the supported docflavors, categories and attributes Class<? extends Attribute>[] categories = (Class<? extends Attribute>[]) printer.getSupportedAttributeCategories(); DocFlavor[] flavors = printer.getSupportedDocFlavors(); AttributeSet attributes = printer.getAttributes(); //get all the avaliable attributes for (Class<? extends Attribute> category : categories) { for (DocFlavor flavor : flavors) { //get the value Object value = printer.getSupportedAttributeValues(category, flavor, attributes); //check if it something if (value != null) { //if it a SINGLE attribute... if (value instanceof Attribute) set.add((Attribute) value); //...then add it //if it a SET of attributes... else if (value instanceof Attribute[]) set.addAll(Arrays.asList((Attribute[]) value)); //...then add its childs } } } return set; } 

Googling I also write getAttributes () to get all attributes, but PrinterState is not present.

This is a list of all the attributes:

 21.12.2015 16:48:56 INFO PrintWorker:142 - Check -------------- 21.12.2015 16:48:58 INFO PrintWorker:151 - State false 21.12.2015 16:48:58 INFO PrintWorker:154 - copies-supported 21.12.2015 16:48:58 INFO PrintWorker:154 - finishings 21.12.2015 16:48:58 INFO PrintWorker:154 - job-sheets 21.12.2015 16:48:58 INFO PrintWorker:154 - job-sheets 21.12.2015 16:48:58 INFO PrintWorker:154 - number-up 21.12.2015 16:48:58 INFO PrintWorker:154 - number-up 21.12.2015 16:48:58 INFO PrintWorker:154 - number-up 21.12.2015 16:48:58 INFO PrintWorker:154 - number-up 21.12.2015 16:48:58 INFO PrintWorker:154 - number-up 21.12.2015 16:48:58 INFO PrintWorker:154 - number-up 21.12.2015 16:48:58 INFO PrintWorker:154 - orientation-requested 21.12.2015 16:48:58 INFO PrintWorker:154 - orientation-requested 21.12.2015 16:48:58 INFO PrintWorker:154 - orientation-requested 21.12.2015 16:48:58 INFO PrintWorker:154 - orientation-requested 21.12.2015 16:48:58 INFO PrintWorker:154 - page-ranges 21.12.2015 16:48:58 INFO PrintWorker:154 - media 21.12.2015 16:48:58 INFO PrintWorker:154 - spool-data-destination 

Until

 logger.info("State " + printer.isAttributeCategorySupported(PrinterState.class)); 

always returns:

 21.12.2015 16:48:58 INFO PrintWorker:151 - State false 

I tested the following code on Linux and Windows (7), but none of them returned the actual status. What could be the problem? Printer, driver or my code?

+6
source share
1 answer

isAttributeCategorySupported() returns true if the print service supports specifying a doc-level or job-level attribute in category in a print request otherwise returns false.

looking at the official oracle documentation will become much clearer.

+6
source

All Articles