如何在java fx中显示打印对话框并打印文档(而不仅仅是节点)

时间:2014-08-19 13:17:22

标签: java printing javafx javafx-8

我正在尝试在java fx中打印生成的pdf文件,但我见过的所有示例都是用于打印java fx节点。我本来可以使用普通的打印api,但它显示的打印对话框是基于swing的,在行为和外观上都是一个完全不同的应用程序,这可能会让用户感到困惑。

我希望在打印前显示一个对话框,以便用户可以选择自己喜欢的打印机,并在可能的情况下更改页面设置。根据{{​​3}},这在Java 8中是预期的

  

1)PrinterJob - 控制打印过程的类   为。提供支持   *将打印和页面设置对话框   平台本机对话框        至少在Windows和Mac OS X上。

the open jdk wiki被标记为已修复

然而,这个PrinterJob类和javafx打印包有两个问题(据我所知):

  1. 仅打印节点。
  2. 没有明确的方式显示用户选择打印属性的对话框
  3. 那么如何在java fx中提供打印对话框以帮助用户打印pdf文档?

    PS:我在桌面环境中使用Java 8更新20(Windows 7 64位)

    任何指针都表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果使用Java8,则只能打印节点(据我所知)。 但是您可以创建一个ImageView来渲染可以打印的图像。 如果您想要打印pdf,请查看https://www.idrsolutions.com/javafx-pdf-viewer或任何其他javafx PDF查看器。

您可以在节点(PDF查看器)中渲染pdf并打印它。

但是如果你想要一个打印对话框,我认为你必须建立自己的。

但那不是真的很难。

您可以使用Printer类中提供的所有信息,例如:

    ObservableList<PaperSource> paperSources = FXCollections.observableArrayList();
    paperSources.add(PaperSource.AUTOMATIC);
    paperSources.add(PaperSource.BOTTOM);
    ...

    PrintQuality.values()
    PrintSides.values() 
    ...