2013-06-05 7 views
1

мой принтер является принтером этикеток Zebra ZM400 и подключен к одному из компьютеров (подключенных к USB) в сети.Печать Zebra ZM400 с использованием Java

Я хочу отправить команду на принтер этикеток с моего компьютера по сети и напечатать ярлык.

Как подключить этот принтер к сети и напечатать ярлык из приложения java?

Я знаю, что я должен использовать ZPL langauage, но я не знаю, как сделать соединение и отправить команду на принтер этикеток.

Возможно ли это? Я занимался серфингом в google, но я пока не могу найти образец кода.

EDIT

Я использовал метод norbi771 в .. но когда он послал команду, просто пустым выйти ..

размер моего лейбла является 3,25" х 3,75" ..

Этот это мой пример кода для ярлыка .. но ничего не выходит.

public class TestLabelPrinter { 

    /** 
    * @param args 
    */ 
    public static void printLabel(String label, String company, String docDate) { 
     try { 
      FileOutputStream os = new FileOutputStream("\\\\192.168.42.57\\zd"); 
      PrintStream ps = new PrintStream(os); 
      String commands = "^XA" + 
           "^LH30,30" + 
           "^F020,10^AD^FDZEBRA^FS" + 
           "F020,60^B3^FDAAA001^FS" + 
           "^XZ";  

      ps.println(commands); 
      ps.print("\f"); 
      ps.close(); 
     } catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 

    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     printLabel("label 12345", "Company name", "2013-05-10 12:45"); 
     System.out.println("Successful.."); 
    } 
+0

Вы уже нашли API печати? –

+0

@ ThorbjørnRavnAndersen, они обеспечивают api? Я еще не нашел. Поддержка API для ZM400 (300 dpi)? – Raymond

ответ

4

Возможно, это не лучший ответ, но мне недавно понравилось tha т. Я подключил принтер к ПК с Windows. Затем я поделился принтером. Затем этот общий принтер я отображается в LPT1 с помощью простой команды (все это можно сделать один один ПК):

Поскольку в настоящее время этот порт LPT1 является известный файл, вы можете написать. Теперь я просто записываю данные в этот файл в JAVA, и он работает нормально. Я знаю, что это не очень элегантно, но работает для меня и позволяет мне использовать один принтер для печати этикеток общего между несколькими ПК

public class EplPrint1 { 
      private final String port; 
      public EplPrint1(String port) { 
        this.port = port; 
      } 
      public void printLabel(String label, String company, String docDate) throws FileNotFoundException { 
        FileOutputStream os = new FileOutputStream(port); 
        PrintStream ps = new PrintStream(os); 
        String commands = "N\n" 
          + "A1,1,0,1,1,1,N,\""+asciiNormalize(company)+"\"\n" 
          + "A1,20,0,1,1,1,N,\""+asciiNormalize("Entry date")+": " + docDate+"\"\n" 
          + "B1,40,0,1,3,2,80,B,\""+label+"\"\n" 
          + "P1,1\n";  

        ps.println(commands); 
        ps.print("\f"); 
        ps.close(); 
      } 

      public static void main(String[] argv) throws FileNotFoundException { 
        //EplPrint1 p = new EplPrint1("d:\\tmp\\eplcommands.txt"); 
        EplPrint1 p = new EplPrint1("LPT1"); 
        //p.printLabel("23535.A.33.B.233445"); 
        p.printLabel("label 12345", "Company name", "2013-05-10 12:45"); 
      } 
    } 

Приведенный пример для EPL печати, но ZPL должны работать таким же образом.

+0

мой принтер подключен к USB .. так что мне нужно что-нибудь делать? в вашем коде «порт» есть какой порт? извините, я просто стартер ... – Raymond

+0

только что обновил код, поэтому вы можете увидеть конструктор, который позволяет вам выбрать порт, который является LPT1 – norbi771

+0

Ваш принтер USB, как и мой. Имя моего окна - nne6400. Я установил принтер, а его имя окна - ZDesigner GK420t. Затем я поделился принтером на своем ПК. Акция получила название ZEBRA. Теперь на моем ПК я открываю командную строку и просто пишу: 'net use \\ nne6400 \ ZEBRA LPT1' – norbi771

2

Zebra предоставляет API Java на сайте www.zebra.com/link. Он не претендует на поддержку ZM400, но стоит посмотреть 20 минут. Я был бы удивлен, если бы не поддерживал эту модель, поскольку все поддерживаемые принтеры говорят на ZPL.

Для вашего ZPL вам не хватает каретки^перед четвертой строкой, прямо перед FO20,60. Кроме того, вы используете шрифт «D» (как указано командой^AD). Вы должны рассмотреть возможность изменить это на «0» (как в^A0), чтобы сначала использовать шрифт принтера по умолчанию. Здесь вы можете прочитать руководство по ZPL: https://support.zebra.com/cpws/docs/zpl/zpl_manual.pdf. Вот краткий пример привет мир:

^XA 
^FO50,50 
^A0N,50,50 
^FD Hello World ^FS 
^XZ 
+0

спасибо за вашу помощь .. я получил ответ сейчас .. :) – Raymond

1

Для людей, которые нуждаются в помощи, чтобы генерировать ZPL непосредственно на Java, я сделать библиотеку Utils.

https://github.com/w3blogfr/zebra-zpl

+0

Поддерживает ли ваша библиотека изображения? –

+0

Эта библиотека поможет вам создать ярлык и базовую команду, например текст и штрих-код. Но вы держите управление, а библиотека также имеет метод ZebraNativeZpl для родного zpl, который еще не поддерживается – Thibaut