2012-02-16 25 views
8

Sto creando un'applicazione java che recupera un ID utente da un database, lo trasforma in un codice a barre, quindi lo invia a una stampante. Sto pensando di utilizzare una stampante Zebra e mi chiedevo se qualcuno ha esperienza di stampa su una stampante Zebra da un'applicazione Java; se è così, potresti condividere del codice rendendo questo possibile?Invio di un codice a barre a una stampante Zebra da un'applicazione Java

Grazie in anticipo, Tumaini

risposta

7

Ci sono due modi per lavorare con le stampanti Zebra. Il primo è quello di stampare come su una normale stampante. Le basi della stampa Java sono ben spiegate in official tutorial. La fine della pagina verrà trattata dalla stampante come fine dell'adesivo. Lo svantaggio di questo approccio è che tutta la verniciatura deve essere eseguita a mano. Cioè non è possibile utilizzare la capacità di codice a barre della stampante interna.

Il secondo è scrivere comandi ZPL direttamente sulla 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 caratteri personalizzati potrebbero farti venire il mal di testa. I manuali di programmazione sono disponibili gratuitamente sul sito Zebra: Part 1 e Part 2.

8

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

EPL2 programming guide for 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; 
} 
+0

Il legame sembra morto. Utilizzare questo invece: https://www.zebra.com/content/dam/zebra/manuals/en-us/printer/epl2-pm-en.pdf – luksch

Problemi correlati