当前位置: 首页 > 知识库问答 >
问题:

JavaFX 8 WebEngine打印方法无法在Landscape中打印

狄玮
2023-03-14

我尝试在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();
}

系统输出显示纵向方向

纸张=纸:A4 (210 x 297mm) 尺寸=594.90087890625x841.3598022460938 MM 东方=纵向左边缘=54.0 右边缘=54.0 顶部边缘=54.0 底部边缘=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显示

纸张=纸张:A4尺寸= 210.0 x297.0 MM Orient = LANDSCAPE left margin = 54.0 right margin = 53.11810302734375 top margin = 51.995269775390625 bottom margin = 54.0

对话框有问题,每次都要设置A4和风景。

我有三个问题:-

>

  • 为什么网页引擎打印不使用我传入打印机的页面布局?

    是否可以在webEngine上获得横向定位。打印(作业);无需通过页面设置对话框进行设置?

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

    在打字的时候,我也尝试过

    print{@page {size: landscape}}
    

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

    谢谢

  • 共有1个答案

    养慈
    2023-03-14

    您需要使用方法job.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();
    }
    

     类似资料:
    • 我应该如何将它打印到我的控制台,并使它显示我在方法中声明的数组? 当我试图打印它时,就像: 不管用,那我该怎么做呢? 我只是想知道如何在我的控制台打印它。

    • 我正在使用Python 3.8执行一个Discord bot,我在_member_join()上的事件

    • 我正在使用ESAPI记录器和log4j提供的记录器。用于配置的xml文件。我成功地打印了日志消息(只是一个带有main方法的平面java程序) 我的log4j.xml文件如下所示 我正在使用这些ESAPI.properties和validation.properties 问题是%M(用于模式布局)没有打印写日志消息的方法的名称。%M总是打印“log”(org . owasp . esapi . l

    • 问题内容: 文件创建成功,但是我无法让PrintWriter将任何内容打印到文本文件。码: 问题答案: 您必须刷新和/或关闭文件才能将数据写入磁盘。 添加您的代码:

    • 问题内容: 我有一个已编码为UTF-8的俄语字符串 当我在Eclipse控制台中打印字符串时,我得到有人可以建议如何将俄语字符串打印到控制台,或者我在这里做错了什么? 我尝试过使用它将其转换为字节,然后仍然是同样的问题:-( 问题答案: 试试这个: 或这个: 俄语的主要问题是正确设置UTF-8编码。

    • 好吧所以我有三节课 " " '' 我正在尝试做的是创建一个新类来产生以下输出: 我是一个蓝色矩形,宽 20 高,高 10。我是一个半径为30的红色圆圈。我是一个绿色矩形,宽 25 宽,25 高,但我在调用方法 draw() 时遇到问题;