如何解决在多个页面上打印 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 举报,一经查实,本站将立刻删除。