2017-04-16 23 views
1

我打印使用JavaFX的PrinterJob節點,就像這樣:的JavaFX - javafx.print.PrinterJob.createPrinterJob()總是在Mac

/** 
* @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,所以我確保打印機可用,它是,並Printer.getAllPrinters()返回空數組。

值得注意的是,java.awt.print.PrinterJob.getPrinterJob()在Windows和Mac上均正常工作。

什麼問題或我做錯了什麼?

+0

對我來說工作正常。你有打印機嗎?在這種情況下,Printer.getAllPrinters()應該返回一個非空的列表。 –

+0

@JoséPereda是的,我有,,和它的工作正常與java.awt打印機作業,,,那很奇怪 –

+0

我得到同樣的錯誤,你解決了嗎? – pcambre

回答

0

我也遇到同樣的問題。它仍然沒有解決。但我發現它可以在控制檯刷新打印機列表後獲得打印機。我在createPrinterjob()之前添加一行,它有時(並非總是)有效。

「Runtime.getRuntime().exec(」lpstat -p -d「)」