在Zebra浏览器打印机上打印标签

时间:2020-07-15 09:03:07

标签: c# zebra-printers

Zebra浏览器打印是一个不错的功能。通过发送API请求,我可以从任何浏览器应用(例如Chrome,Firefox)甚至Postman api打印标签。打印机通过USB连接。 我的问题是我无法从任何Windows应用程序(Wpf / Winform)打印相同的内容。我已经尝试使用此代码进行TCP IP打印

        NetworkStream ns = null;
        Socket socket = null;

        try
        {
            string ipAddress = "127.0.0.1";
            int port = 9100;
            var printerIP = new IPEndPoint(IPAddress.Parse(ipAddress), port);

            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Connect(printerIP);

            ns = new NetworkStream(socket);

            byte[] toSend = Encoding.ASCII.GetBytes(zpl);
            ns.Write(toSend, 0, toSend.Length);
        }
        finally
        {
            if (ns != null)
                ns.Close();

            if (socket != null && socket.Connected)
                socket.Close();
        }

但是它不起作用。 还尝试过从API发送数据

   var data =
            "{\"device\":{\"deviceType\":\"printer\",\"uid\":\"Zebra test printer\",\"provider\":\"com.zebra.ds.webdriver.desktop.provider.DefaultDeviceProvider\",\"name\":\"Zebra test printer\",\"connection\":\"driver\",\"version\":3,\"manufacturer\":\"Zebra Technologies\"}}, \r\n\"data\":\"^XA ^FT230,45,1 ^A0N,28,28 ^FD $1.00^FS ^XZ\"";

        var client = new HttpClient();
        var response = client.PostAsync(new Uri("http://127.0.0.1:9100/write"), new StringContent(data)).ConfigureAwait(false).GetAwaiter().GetResult();
        if (response.IsSuccessStatusCode)
        {
            MessageBox.Show("success");
        }

        var responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
        MessageBox.Show(responseContent);

但是,此API代码在任何基于浏览器的应用程序或Postman中均可完美运行

这是我的浏览器打印设置

Browser print settings-Zebra

请让我知道如何从Windows应用程序打印?

0 个答案:

没有答案
相关问题