微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在多个页面上打印 javafx WebEngine 的内容

如何解决在多个页面上打印 javafx WebEngine 的内容

我想打印 WebEngine 的内容

PrinterJob job = PrinterJob.createPrinterJob();
job.getJobSettings().setJobName("Print WebEngine");
job.getJobSettings().setPageLayout(job.getPrinter().createPageLayout(Paper.A4,PageOrientation.PORTRAIT,MarginType.DEFAULT));

webEngine.print(job);

job.endJob();

不幸的是,尽管加载了更多内容,但我的打印机只能打印一页,这些内容应该打印在更多页面上。此外,打印在单页上的内容在结果上会失真。

有谁知道我如何在许多页面上打印 WebEngine 的全部内容,以便它不会被缩放或类似的东西?

解决方法

我可以使用您拥有的代码打印多页。第一次打印将打印 Google 的主页。那是一页。在搜索栏中输入 test 并按回车键。这应该返回两个可打印的页面。

//https://docs.oracle.com/javase/8/javafx/embedded-browser-tutorial/printing.htm
//http://tutorials.jenkov.com/javafx/webview.html



import javafx.application.Application;
import javafx.concurrent.Worker;
import javafx.print.PrinterJob;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class App extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("JavaFX WebView Example");

        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();        
        webEngine.getLoadWorker().stateProperty().addListener((observable,oldValue,newValue) -> {
            System.out.println("oldValue: " + oldValue);
            System.out.println("newValue: " + newValue);
            
            if (newValue == Worker.State.SUCCEEDED) {
                PrinterJob printerJob = PrinterJob.createPrinterJob();
                if(printerJob != null)
                {
                    printerJob.showPrintDialog(primaryStage);
                    webEngine.print(printerJob);
                    printerJob.endJob();
                }                
            }
        });
        
        webEngine.load("http://google.com");
        

        VBox vBox = new VBox(webView);
        Scene scene = new Scene(vBox,960,600);

        primaryStage.setScene(scene);
        primaryStage.show();

    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?