在多个页面上打印 javafx WebEngine 的内容
Printing a javafx WebEngine's content on multiple pages
我想打印一个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 的主页。那是一页。在搜索栏中输入测试,然后按回车键。这应该 return 两个可打印页面。
//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();
}
}
我想打印一个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 的主页。那是一页。在搜索栏中输入测试,然后按回车键。这应该 return 两个可打印页面。
//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();
}
}