3

私のプリンターはZebra ZM400ラベルプリンターで、ネットワーク内のPC(USBで接続)の1つに接続されています。

PCからネットワーク経由でラベルプリンターにコマンドを送り、ラベルを印刷したい。

そのプリンタをネットワークから接続し、Java アプリケーションからラベルを印刷するにはどうすればよいですか?

ZPL 言語を使用しなければならないことはわかっていますが、ラベル プリンターに接続してコマンドを送信する方法がわかりません。

出来ますか?Google でサーフィンしましたが、まだサンプル コードが見つかりません。

編集

私はnorbi771の方法を使用しました..しかし、それがコマンドを送信すると、空白が出てきます..

私のラベルの寸法は 3.25" x 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..");
    }
4

3 に答える 3

6

最善の答えではないかもしれませんが、私は最近そのようにしました。プリンタを Windows の PC に接続しました。それから私はプリンターを共有しました。次に、この共有プリンターを単純なコマンドで LPT1 にマップしました (これらはすべて 1 台の PC で実行できます)。

net use \\pcname\sharedprinter LPT1:

現在、この LPT1 ポートは書き込み可能なファイルです。今、JAVA でそのファイルにデータを書き込むだけで、正常に動作しています。あまり洗練されていないことはわかっていますが、私にとってはうまく機能し、1 台のラベル プリンターを数台の PC で共有して使用できます。

    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 も同じように機能するはずです。

于 2013-06-05T10:27:21.153 に答える