首页 > 解决方案 > Java PrinterJob 自动定位

问题描述

我有一个 PDF,我想用 PrinterJob 打印标签。问题是结果移动了大约 90 度,打印机是 Bixolon SLP-DX223。在驱动程序设置中,我更改了主要和默认设置中的标签尺寸,但打印没有变化。如果我使用 Acrobat Reader 和相同的设置打印 pdf,结果是完美的,但不是使用 PrinterJob 打印。

try {
     PDDocument document = PDDocument.load(new File(file));
     PrintService myPrintService = findPrintService(printer);
     PrinterJob job = PrinterJob.getPrinterJob();

     job.setPageable(new PDFPageable(document, Orientation.PORTRAIT));
     job.setPrintService(myPrintService);
     job.setJobName(jobname);
     job.setCopies(copies);
     job.print();
     document.close();

} 
catch (PrinterException | IOException e) {
     e.printStackTrace();
}

感谢帮助

标签: java

解决方案


@GilbertLeBlanc 的答案让我得到了结果,纸张的大小没有定义,所以我使用了以下代码:

double labelWidth = 50.8;           //width in mm
double labelHeigth = 25.4;          //height in mm

labelWidth = labelWidth / 0.353;    //calculate size
labelHeight = labelHeight / 0.353;  //calculate size

Paper paper = new Paper();
paper.setSize(labelWidth, labelHeight);
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);

Book book = new Book();
book.append(new PDFPrintable(document), pageFormat, document.getNumberOfPages());

job.setPageable(book);              //job is the printerjob

推荐阅读