【问题标题】:Java print, Letter format instead of A4Java 打印,Letter 格式而不是 A4
【发布时间】:2017-09-14 06:53:54
【问题描述】:

据我所知,Java Print 在向打印机发送任务时使用操作系统(Windows)设置(格式类型)。但是,无论我如何更改代码,尽管我的所有设置都是为 A4 设置的,但在将任务发送到打印机后,它总是接受 Letter 格式的任务,并且打印机出现缺纸错误。虽然,当我按下打印机上的重新启动打印按钮时,它会正确打印出文件。我从 StackOverflow 尝试了很多不同的方法,但它们并没有真正奏效。我在连接到相同型号打印机的另一台 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,比如this for example
  • 你试过PrintJob.defaultPage()吗?我还要看看Paper 的默认属性
  • 我做了一个快速测试,Paper 似乎默认为 Letter,但 PrintJob.defaultPage().getPaper 似乎在 A4 中(这将支持我当前的打印机设置)
  • 您也可以使用PrintJob.pageDialog 来查看特定PageFormat 的属性是什么
  • @charith-prabhagya 请不要在您的编辑中写出如此冗长无意义的 cmets。

标签: java printing printers


【解决方案1】:

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

Paper paper = new Paper();

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

然后我看了看:

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

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

所以,我的建议是使用PrinterJob 的默认PageFormat 作为你工作的基础

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2021-09-10
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多