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中均可完美运行
这是我的浏览器打印设置
请让我知道如何从Windows应用程序打印?