Envoi d'un code-barres à une imprimante Zebra à partir d'une application Java

StackOverflow https://stackoverflow.com/questions/9308412

  •  25-10-2019
  •  | 
  •  

Question

Je crée une application java qui récupère un userId à partir d'une base de données, la transforme en un code-barres, puis l'envoie à une imprimante. Je prévois d'utiliser une imprimante Zebra et je me demandais si quelqu'un a l'expérience de l'impression sur une imprimante Zebra à partir d'une application Java; si oui, pourriez-vous partager un peu de code rendre cela possible?

Merci à l'avance, Tumaini

Était-ce utile?

La solution

Il y a deux façons de travailler avec les imprimantes Zebra. La première consiste à imprimer sur l'imprimante comme régulière. Java de base d'impression sont bien expliquées dans tutoriel officiel. Fin de la page sera traitée par l'imprimante comme fin de l'autocollant. L'inconvénient de cette approche est que toute la peinture doit être fait par des mains. C'est à dire. vous ne pouvez pas utiliser la capacité de codage à barres de l'imprimante interne.

La seconde est d'écrire des commandes ZPL directement à l'imprimante. Quelque chose comme ceci:

PrintService pservice = ... // acquire print service of your printer
DocPrintJob job = pservice.createPrintJob();  
String commands = "^XA\n\r^MNM\n\r^FO050,50\n\r^B8N,100,Y,N\n\r^FD1234567\n\r^FS\n\r^PQ3\n\r^XZ";
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(commands.getBytes(), flavor, null);
job.print(doc, null);

L'inconvénient est que vous devez apprendre ZPL - Programmation Zebra Langue. Bien qu'il soit assez simple, mais des choses telles que des images et des polices personnalisées pourrait vous faire des maux de tête. manuels de programmation sont disponibles gratuitement sur le site Zebra: Partie 1 et Partie 2 .

Autres conseils

Non chaque imprimante Zebra a ZPL II, mais vous pouvez utiliser EPL

EPL2 Guide de programmation pour Zebra

Exemple de code:

private static boolean printLabel(PrintService printService, String label) {
    if (printService == null || label == null) {
        System.err.println("[Print Label] print service or label is invalid.");
        return false;
    }
    String czas = new SimpleDateFormat("d MMMMM yyyy'r.' HH:mm s's.'").format(new Date());
    String command =  
            "N\n"+
            "A50,50,0,2,2,2,N,\""+label+"\"\n"+
            "B50,100,0,1,2,2,170,B,\""+label+"\"\n"+
            "A50,310,0,3,1,1,N,\""+czas+"\"\n"+
            "P1\n"
            ;

    byte[] data;
    data = command.getBytes(StandardCharsets.US_ASCII);
    Doc doc = new SimpleDoc(data, DocFlavor.BYTE_ARRAY.AUTOSENSE, null);

    boolean result = false;
    try {
        printService.createPrintJob().print(doc, null);
        result = true;
    } catch (PrintException e) {
        e.printStackTrace();
    }
    return result;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top