Domanda

Sto creando un'applicazione Java che recupera un userId da un database, lo trasforma in un codice a barre, quindi lo invia a una stampante. Sto progettando di utilizzare una stampante Zebra e mi chiedevo se qualcuno ha esperienza di stampa su una stampante Zebra da un'applicazione Java; in caso affermativo, potrebbe condividere un codice rendendo possibile?

Grazie in anticipo, Tumaini

È stato utile?

Soluzione

Ci sono due modi per funzionare con le stampanti Zebra. Il primo è quello di stampare come il normale stampante. Java Principi basilari di stampa sono ben spiegati in esercitazione ufficiale. Fine della pagina sarà trattata da stampante come fine adesivo. Lo svantaggio di questo approccio è che tutta la pittura deve essere fatta da mani. Cioè non è possibile utilizzare la capacità barcoding della stampante interna.

Il secondo è quello di scrivere i comandi ZPL direttamente alla stampante. Qualcosa di simile a questo:

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);

Lo svantaggio è che avete bisogno di imparare ZPL - Zebra Programming Language. Anche se è abbastanza semplice, ma cose come immagini e font personalizzati potrebbe farvi mal di testa. manuali di programmazione sono liberamente disponibili sul sito Zebra: Parte 1 e Parte 2 .

Altri suggerimenti

Non tutte le stampanti Zebra ha ZPL II, ma poi si può usare EPL

EPL2 Guida alla programmazione per Zebra

Esempio di codice:

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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top