0

我正在尝试在横向方向的 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 显示纵向

纸张=纸张:A4 (210 x 297mm) 尺寸=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();
    }
}

如果我在页面设置对话框中选择横向,则 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 和 Landscape。

我有3个问题:-

  1. 为什么 webEngine.print 没有使用我传入打印机的 PageLayout?

  2. 是否可以在 webEngine.print(job) 上获得横向方向?无需通过页面设置对话框进行设置?

  3. 如果我必须使用页面设置对话框,JavaFX 是否可以记住我为下一个打印作业(即 A4 和横向)的页面设置设置的内容?

在键入此内容时,我也尝试过

print{@page {size: landscape}}

在 HTML 页面上的样式标记中,但这也不起作用。

谢谢

4

1 回答 1

7

你需要设置你的PageLayout,使用方法JobSettingsPrinterJobjob.getJobSettings().setPageLayout(PageLayout)

试试这个代码:

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();
}
于 2015-01-23T08:43:03.843 回答