获取所有活动的打印机

时间:2016-05-19 10:07:24

标签: java javafx printing printers

Printer-Api提供系统的所有打印机Printer.getAllPrinters()

问题是用户没有意识到被选择的打印机是活动的。

是否有机会获得有效的打印机?

可以帮助PrinterAttributes吗?

1 个答案:

答案 0 :(得分:0)

我不确定javaFX,但您可以使用Java Print API的PrintService类来实现此目的。

   DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
   PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
   aset.add(MediaSizeName.ISO_A4);
   PrintService[] pservices =
             PrintServiceLookup.lookupPrintServices(flavor, aset);

现在,您可以遍历这些服务并使用PrinterStatePrinterStateReason类来确定打印服务是否仍然可用

例如:

       PrinterState prnState = (PrinterState)service.getAttribute(
                                              PrinterState.class);
        if (prnState == PrinterState.STOPPED) {
            PrinterStateReasons prnStateReasons =
                (PrinterStateReasons)service.getAttribute(
                                             PrinterStateReasons.class);
            if ((prnStateReasons != null) &&
                (prnStateReasons.containsKey(PrinterStateReason.SHUTDOWN)))
            {
                throw new PrinterException("PrintService is no longer available.");
            }
        }

希望这有帮助