当前位置:  开发笔记 > 编程语言 > 正文

为什么PrinterState总是为空?

如何解决《为什么PrinterState总是为空?》经验,为你挑选了1个好方法。

我需要对我的打印机有更多的控制权,然后我试图获得打印机的PrinterState,然后使用PrintStareReasons.我的代码如下:

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 attributes = getAttributes(printer);
    for(Attribute attr : attributes){
        logger.info(attr.getName());
    }



}

public static Set getAttributes(PrintService printer) {
    Set set = new LinkedHashSet();

    //get the supported docflavors, categories and attributes
    Class[] categories = (Class[]) printer.getSupportedAttributeCategories();
    DocFlavor[] flavors = printer.getSupportedDocFlavors();
    AttributeSet attributes = printer.getAttributes();

    //get all the avaliable attributes
    for (Class category : categories) {
        for (DocFlavor flavor : flavors) {
            //get the value
            Object value = printer.getSupportedAttributeValues(category, flavor, attributes);

            //check if it's something
            if (value != null) {
                //if it's a SINGLE attribute...
                if (value instanceof Attribute)
                    set.add((Attribute) value); //...then add it

                //if it's a SET of attributes...
                else if (value instanceof Attribute[])
                    set.addAll(Arrays.asList((Attribute[]) value)); //...then add its childs
            }
        }
    }

    return set;
}

谷歌搜索我也写了getAttributes()来获取所有的归因,但PrinterState不存在.

这是所有属性的列表:

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

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

总是回来:

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

我在Linux和Windows上测试了以下代码(7),但没有一个返回实际状态.可能是什么问题呢?打印机,驱动程序或我的代码?



1> Mr.Arjun..:

isAttributeCategorySupported()返回true如果打印服务supports specifying a doc-level or job-level attribute in category的打印请求,否则返回false.

看看官方的oracle文档会让我的观点更加清晰

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有