Frage

Ich erstelle eine Java -Anwendung, die eine BenutzerID aus einer Datenbank abruft, sie in einen Barcode umwandelt und dann an einen Drucker sendet. Ich habe vor, einen Zebra -Drucker zu verwenden, und ich habe mich gefragt, ob jemand Erfahrung im Drucken eines Zebra -Druckers aus einer Java -Anwendung hat. Wenn ja, könnten Sie Code teilen, das dies möglich macht?

Vielen Dank im Voraus, Tumaini

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten, mit Zebra -Druckern zu arbeiten. Das erste ist, wie auf normalem Drucker zu drucken. Die Grundlagen von Java -Druckern sind gut erklärt in offizielles Tutorial. Ende der Seite wird vom Drucker als Ende des Aufklebers behandelt. Der Nachteil dieses Ansatzes besteht darin, dass alle Malereien von den Händen erfolgen müssen. Dh Sie können die Barcodierungsfähigkeit des internen Druckers nicht verwenden.

Die zweite besteht darin, ZPL -Befehle direkt an den Drucker zu schreiben. Etwas wie das:

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

Der Nachteil ist, dass Sie ZPL - Zebra -Programmiersprache lernen müssen. Obwohl es einfach genug ist, aber solche Dinge wie Bilder und benutzerdefinierte Schriftarten könnten Sie Kopfschmerzen machen. Die Programmierhandbücher sind auf der Zebra -Site frei verfügbar: Teil 1 und Teil 2.

Andere Tipps

Nicht jeder Zebra -Drucker hat ZPL II, aber dann können Sie EPL verwenden

EPL2 -Programmierhandbuch für Zebra

Code Beispiel:

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top