我正在尝试在java fx中打印生成的pdf文件,但我见过的所有示例都是用于打印java fx节点。我本来可以使用普通的打印api,但它显示的打印对话框是基于swing的,在行为和外观上都是一个完全不同的应用程序,这可能会让用户感到困惑。
我希望在打印前显示一个对话框,以便用户可以选择自己喜欢的打印机,并在可能的情况下更改页面设置。根据{{3}},这在Java 8中是预期的
1)PrinterJob - 控制打印过程的类 为。提供支持 *将打印和页面设置对话框 平台本机对话框 至少在Windows和Mac OS X上。
和the open jdk wiki被标记为已修复
然而,这个PrinterJob
类和javafx打印包有两个问题(据我所知):
那么如何在java fx中提供打印对话框以帮助用户打印pdf文档?
PS:我在桌面环境中使用Java 8更新20(Windows 7 64位)
任何指针都表示赞赏。
答案 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()
...