我正拼命想在Windows上用Java在Brother QL580n上打印随机长度标签。
我已经找到了一种方法来使用CUPS,但是当使用Windows打印机从Windows执行它时它无法正常工作。
以下是使用Apache PDFBox的代码示例:
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
PrintService service = null;
for (PrintService printer : printServices) {
if (printer.getName().equals("Brother QL-580N")) {
service = printer;
}
}
PDDocument document = PDDocument.load(new File("C:\\label.pdf"));
Paper paperP = new Paper();
double width = document.getPage(0).getMediaBox().getWidth();
double height = document.getPage(0).getMediaBox().getHeight();
paperP.setSize(width, height);
paperP.setImageableArea(0, 0, paperP.getWidth(), paperP.getHeight()); // no margins
// custom page format
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paperP);
PrinterJob jobP = PrinterJob.getPrinterJob();
jobP.setPrintService(service);
Book book = new Book();
book.append(new PDFPrintable(document), pageFormat, document.getNumberOfPages());
jobP.setPageable(book);
jobP.print();
我的pdf标签的实际长度为40毫米,但只打印了29毫米,这是Windows默认标签长度之一(即使我将Windows打印机的首选项更改为62毫米x 29毫米以外的其他标签)
顺便说一下,我也无法使用Adobe Reader,但是我可以用Brother的P-Touch Editor打印自定义长度标签
修改
我刚刚试图查看jobP.getPageFormat( new HashPrintRequestAttributeSet()).getWidth()
和jobP.getPageFormat( new HashPrintRequestAttributeSet()).getHeight()
,我得到的是62毫米和29毫米,所以我尝试传递自定义的PageFormat无法正常工作