Java 打印,Letter 格式而不是 A4

Java print, Letter format instead of A4

据我所知,Java Print 在向打印机发送任务时使用 OS (windows) 设置(格式类型)。然而,无论我如何更改我的代码,尽管我的所有设置都是针对 A4 纸设置的,但在将任务发送到打印机后,它总是接受带有 Letter 格式的任务,并且出现打印机缺纸错误。虽然,当我按下打印机上的重新启动打印按钮时,它会正确打印出文件。我尝试了很多来自 Whosebug 的不同方法,但它们并没有真正奏效。我在连接到相同型号打印机的另一台 PC 上尝试了我的应用程序 - 同样的问题。也许我遗漏了一些小东西或在错误的地方寻找解决方案?

这是我的一段代码:

private PrinterJob createPDFPrinterJob(PDDocument pdfDocument) {

    PrinterJob printJob = PrinterJob.getPrinterJob();

    PageFormat pageFormat = new PageFormat();
    pageFormat.setOrientation(PageFormat.PORTRAIT);

    Paper paper = new Paper();
    pageFormat.setPaper(paper);

    try {
        printJob.setPrintable(new PDPageable(pdfDocument), pageFormat);
    }
    catch(PrinterException ex) {
        ex.printStackTrace();
    }

    return printJob;
}

所以,我使用以下方法进行了快速测试:

Paper paper = new Paper();

生成21.59x27.94cms的页面,与Letter一致

然后我看了看:

PrinterJob.getPrinterJob().defaultPage().getPaper()

生成21x29.7cms的页面,与A4一致。

因此,我的建议是使用 PrinterJob 的默认值 PageFormat 作为您工作的基础