【发布时间】: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。