Java打印,Letter格式而不是A4

时间:2017-09-14 06:53:54

标签: java printing printers

据我所知,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;
}

1 个答案:

答案 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作为您工作的基础