2012-02-16 10 views
8

Tôi đang tạo một ứng dụng java truy xuất userId từ cơ sở dữ liệu, chuyển đổi nó thành mã vạch, sau đó gửi nó đến máy in. Tôi đang lập kế hoạch để sử dụng một máy in Zebra và tôi đã tự hỏi nếu có ai có kinh nghiệm in ấn cho một máy in Zebra từ một ứng dụng Java; nếu vậy, bạn có thể chia sẻ một số mã làm cho điều này có thể?Gửi mã vạch tới máy in Zebra từ ứng dụng Java

Cảm ơn trước, Tumaini

Trả lời

7

Có hai cách để làm việc với máy in Zebra. Đầu tiên là in như trên máy in thông thường. Các vấn đề cơ bản về in ấn Java cũng được giải thích rõ ràng trong official tutorial. Kết thúc trang sẽ được xử lý bằng máy in khi kết thúc nhãn dán. Điểm bất lợi của phương pháp này là tất cả các bức tranh phải được thực hiện bằng tay. I E. bạn không thể sử dụng khả năng mã vạch của máy in nội bộ.

Thứ hai là viết các lệnh ZPL trực tiếp vào máy in. Một cái gì đó như thế này:

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

Điều bất lợi là bạn cần học ZPL - Ngôn ngữ lập trình Zebra. Mặc dù nó là đơn giản, nhưng những thứ như hình ảnh và phông chữ tùy chỉnh có thể làm bạn đau đầu. Hướng dẫn lập trình có sẵn miễn phí trên trang Zebra: Part 1Part 2.

8

Không phải mọi máy in Zebra có ZPL II, nhưng sau đó bạn có thể sử dụng EPL

EPL2 programming guide for Zebra

Mã mẫu:

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

Các liên kết dường như đã chết. Sử dụng thay vào đó: https://www.zebra.com/content/dam/zebra/manuals/en-us/printer/epl2-pm-en.pdf – luksch