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
作为您工作的基础
据我所知,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
作为您工作的基础