Brother QL580n标签打印机上的Java自动长度打印(仅限Windows)

时间:2017-06-08 14:28:12

标签: java windows printing

我正拼命想在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无法正常工作

0 个答案:

没有答案