Printer-Api提供系统的所有打印机Printer.getAllPrinters()
。
问题是用户没有意识到被选择的打印机是活动的。
是否有机会获得有效的打印机?
可以帮助PrinterAttributes
吗?
答案 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);
现在,您可以遍历这些服务并使用PrinterState和PrinterStateReason类来确定打印服务是否仍然可用
例如:
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.");
}
}
希望这有帮助