JavaFX 8 WebEngine 打印方法无法在 Landscape 中打印
JavaFX 8 WebEngine print method unable to print in Landscape
我正在尝试在 A4 纸上横向打印 JavaFX WebView (JavaFX 8_25) 中的 HTML 页面,但它以纵向打印,字体大小很小
printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
PrinterJob job = PrinterJob.createPrinterJob(printer);
if (job != null) {
System.out.println(job.getJobSettings().getPageLayout());
webEngine.print(job);
job.endJob();
}
System.out显示纵向
Paper=纸张:A4 (210 x 297mm) size=594.90087890625x841.3598022460938 MM Orient=PORTRAIT leftMargin=54.0 rightMargin=54.0 topMargin=54.0 bottomMargin=54.0
我发现在横向模式下打印 HTML 页面的唯一方法是在打印之前调用打印作业的 showPageSetupDialog 方法。
printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
PrinterJob job = PrinterJob.createPrinterJob(printer);
if (job != null) {
if(job.showPageSetupDialog(null)) {
System.out.println(job.getJobSettings().getPageLayout());
webEngine.print(job);
job.endJob();
}
}
如果我在“页面设置”对话框中 select 横向,System.out 显示
Paper=Paper: A4 size=210.0x297.0 MM Orient=LANDSCAPE leftMargin=54.0 rightMargin=53.11810302734375 topMargin=51.995269775390625 bottomMargin=54.0
我的对话框有问题,因为我每次都必须设置 A4 和横向。
我有 3 个问题:-
为什么 webEngine.print 没有使用我传递给打印机的 PageLayout?
是否可以在 webEngine.print(job) 中获得横向方向;无需通过页面设置对话框进行设置?
如果我必须使用页面设置对话框,JavaFX 是否可以通过任何方式记住我为下一个打印作业(即 A4 和横向)的页面设置设置的内容?
打字的时候我也试过了
print{@page {size: landscape}}
在 HTML 页面上的样式标签中,但这也不起作用。
谢谢
您需要使用方法 job.getJobSettings().setPageLayout(PageLayout)
将 PageLayout
设置为 PrinterJob
的 JobSettings
试试这个代码:
PageLayout pageLayout = printer.createPageLayout(Paper.A4,
PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
PrinterJob job = PrinterJob.createPrinterJob(printer);
job.getJobSettings().setPageLayout(pageLayout);
if (job != null) {
System.out.println(job.getJobSettings().getPageLayout());
webEngine.print(job);
job.endJob();
}
我正在尝试在 A4 纸上横向打印 JavaFX WebView (JavaFX 8_25) 中的 HTML 页面,但它以纵向打印,字体大小很小
printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
PrinterJob job = PrinterJob.createPrinterJob(printer);
if (job != null) {
System.out.println(job.getJobSettings().getPageLayout());
webEngine.print(job);
job.endJob();
}
System.out显示纵向
Paper=纸张:A4 (210 x 297mm) size=594.90087890625x841.3598022460938 MM Orient=PORTRAIT leftMargin=54.0 rightMargin=54.0 topMargin=54.0 bottomMargin=54.0
我发现在横向模式下打印 HTML 页面的唯一方法是在打印之前调用打印作业的 showPageSetupDialog 方法。
printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
PrinterJob job = PrinterJob.createPrinterJob(printer);
if (job != null) {
if(job.showPageSetupDialog(null)) {
System.out.println(job.getJobSettings().getPageLayout());
webEngine.print(job);
job.endJob();
}
}
如果我在“页面设置”对话框中 select 横向,System.out 显示
Paper=Paper: A4 size=210.0x297.0 MM Orient=LANDSCAPE leftMargin=54.0 rightMargin=53.11810302734375 topMargin=51.995269775390625 bottomMargin=54.0
我的对话框有问题,因为我每次都必须设置 A4 和横向。
我有 3 个问题:-
为什么 webEngine.print 没有使用我传递给打印机的 PageLayout?
是否可以在 webEngine.print(job) 中获得横向方向;无需通过页面设置对话框进行设置?
如果我必须使用页面设置对话框,JavaFX 是否可以通过任何方式记住我为下一个打印作业(即 A4 和横向)的页面设置设置的内容?
打字的时候我也试过了
print{@page {size: landscape}}
在 HTML 页面上的样式标签中,但这也不起作用。
谢谢
您需要使用方法 job.getJobSettings().setPageLayout(PageLayout)
PageLayout
设置为 PrinterJob
的 JobSettings
试试这个代码:
PageLayout pageLayout = printer.createPageLayout(Paper.A4,
PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
PrinterJob job = PrinterJob.createPrinterJob(printer);
job.getJobSettings().setPageLayout(pageLayout);
if (job != null) {
System.out.println(job.getJobSettings().getPageLayout());
webEngine.print(job);
job.endJob();
}