据我所知,Java
打印在将任务发送到打印机时使用操作系统(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;
}
答案 0 :(得分:2)
所以,我使用以下方法进行了快速测试:
list_product = list(itertools.combinations(d.columns,2))
counts = []
for a, b in list_product:
count = ((d[a] == 1) & (d[b] == 1)).sum()
counts.append([a, b, count])
counts = pandas.DataFrame(counts, columns=["Target1", "Target2", "Count"])
>>> counts
Target1 Target2 Count
0 A B 1
1 A C 2
2 A D 0
3 A E 2
4 B C 1
5 B D 1
6 B E 5
7 C D 1
8 C E 3
9 D E 1
生成21.59x27.94厘米的页面,与Letter
一致然后我看了一下:
Paper paper = new Paper();
生成一个21x29.7厘米的页面,这与A4一致。
因此,我的建议是使用PrinterJob.getPrinterJob().defaultPage().getPaper()
的默认PrinterJob
作为您工作的基础