4

我正在尝试使用 JavaFX 在 Web 视图中打开 HTML 文件。现在我想打印WebView内容。

这是我的代码:

Group group= new Group();
Scene scene= new Scene(group);
fxpanel.setScene(scene);  
WebEngine eng;
WebView webview = new WebView ();
group.getChildren().add(webview);
webview.setMinSize(740,430);
webview.setMaxSize(740,430);  
webview.setVisible(true);
eng= webview.getEngine();


try
{ 
    eng.load(new File("path of the htmlfile").toURI().toURL().toString());
}
catch(Exception ex)
{ 
    JOptionPane.showMessageDialog(null,"exception") ;}
}
4

2 回答 2

3

您可以使用 JavaFX 8 PrintJob 和打印机 API 打印任何 JavaFX 场景图节点。

这是帖子的链接: http:
//carlfx.wordpress.com/2013/07/15/introduction-by-example-javafx-8-printing/

神奇之处在于这个功能:它会获取您的 webview 并打印到默认打印机

public void print(final Node node) {
    Printer printer = Printer.getDefaultPrinter();
    PageLayout pageLayout = printer.createPageLayout(Paper.NA_LETTER, PageOrientation.PORTRAIT, Printer.MarginType.DEFAULT);
    double scaleX = pageLayout.getPrintableWidth() / node.getBoundsInParent().getWidth();
    double scaleY = pageLayout.getPrintableHeight() / node.getBoundsInParent().getHeight();
    node.getTransforms().add(new Scale(scaleX, scaleY));

    PrinterJob job = PrinterJob.createPrinterJob();
    if (job != null) {
        boolean success = job.printPage(node);
        if (success) {
            job.endJob();
        }
    }
}
于 2013-11-01T19:02:50.063 回答
3

打印 WebView 将作为 Java 8 的一项功能添加。

您可以下载将实现该功能的Java 8 预发行版。

Java 8 将于明年 3 月发布。


Feature Tracker:RT-17666 Webview 和 HTMLEditor 应该支持打印它们的内容


旁注:在您发布的代码中,您在同一线程上混合了 JavaFX 和 Swing 代码。通常,您不应该这样做 =>有关详细信息,请参阅 JavaFX Swing 互操作性教程

于 2013-04-29T06:43:25.710 回答