Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javafx从webview获取打印_Java_Printing_Webview_Javafx 2 - Fatal编程技术网

使用javafx从webview获取打印

使用javafx从webview获取打印,java,printing,webview,javafx-2,Java,Printing,Webview,Javafx 2,我正在尝试使用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); w

我正在尝试使用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") ;}
}

打印WebView将作为Java8的一项功能添加

您可以下载将实现该功能的

Java8将于明年3月发布


功能跟踪器:


旁注:
在发布的代码中,您在同一个线程上混合了JavaFX和Swing代码。通常,您不应该这样做=>请参阅。

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

以下是该帖子的链接:

神奇之处在于这个函数:它将您的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();
        }
    }
}