Impression automatique de longueur Java sur l'imprimante d'étiquettes Brother QL580n (Windows uniquement)


J'essaie désespérément d'imprimer une étiquette de longueur aléatoire sur mon frère QL580n à partir de Java sous Windows.

J'ai trouvé un moyen de le faire avec CUPS mais cela ne fonctionne pas lors de son exécution à partir de Windows avec une imprimante Windows.

Voici un exemple de code utilisant 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();

La longueur réelle de mon étiquette pdf est de 40mm mais seulement 29mm sont imprimés, ce qui est l'une des longueurs d'étiquette par défaut de Windows (même si je change les préférences de l'imprimante Windows en quelque chose d'autre que 62 mm x 29 mm)

En passant, je ne suis pas capable de le faire avec Adobe Reader aussi, mais je suis capable d'imprimer une étiquette de longueur personnalisée avec l'éditeur P-Touch de Brother

MODIFIER

Je viens d'essayer de regarder jobP.getPageFormat( new HashPrintRequestAttributeSet()).getWidth() et {[2] } et je reçois 62mm et 29 mm donc il semble que mon essai de passer un PageFormat personnalisé ne fonctionne pas

Author: phyzalis, 2017-06-08