【问题标题】:How to display print dialog in java fx and print documents (not just nodes)如何在 java fx 中显示打印对话框并打印文档(不仅仅是节点)
【发布时间】:2014-08-19 13:17:21
【问题描述】:

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

我想在打印前显示一个对话框,以便用户可以选择他们喜欢的打印机,并在可能的情况下更改页面设置。根据the open jdk wiki,这是在 java 8 中预期的

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

并且the related jira issue 被标记为固定

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

  1. 它只打印节点。
  2. 没有明确的方式显示对话框供用户选择打印属性

那么如何在 java fx 中提供一个打印对话框来帮助用户打印 pdf 文档呢?

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

感谢任何指针。

【问题讨论】:

标签: java printing javafx javafx-8


【解决方案1】:

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

您可以在节点(PDF 查看器)中呈现 pdf 并打印。

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

但这并不难。

您可以使用打印机类提供的所有信息,例如:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多