我正在使用 JavaFX PrinterJob 打印节点,如下所示:
/**
* @param node
*/
public static final void print(Node node)
throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE,
Printer.MarginType.HARDWARE_MINIMUM);
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null && job.showPrintDialog(CommonConstants.geMasterStage())) {
boolean success = job.printPage(pageLayout, node);
if (success) {
job.endJob();
}
}
}
在 Windows 上工作正常,但是 Printer.getDefaultPrinter();
在 mac 上始终为 null,所以我确保打印机可用,确实如此,并且 Printer .getAllPrinters()
返回空数组。
值得注意的是,java.awt.print.PrinterJob.getPrinterJob()
在 Windows 和 Mac 上都可以正常工作。
问题是什么或者我做错了什么?
最佳答案
我遇到了同样的问题,每当我使用 Printer.getAllPrinters()
检查可用打印机时,它显示除 createPrinterJob()
之外的所有可用打印机始终返回 null。
所以我通过右键单击 Printers & Scanners
下的打印机重置了打印系统设置System Preferences
在 MacOS 中。重置打印系统后,将打印机再次添加到打印机列表中。然后跑createPrinterJob()
再次在 Java 上,此后再也没有收到 null。
关于JavaFX - javafx.print.PrinterJob.createPrinterJob() 在 mac 上始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436611/