我正在研究需要打印FEDEX運輸標籤的.NET WinForms應用程序。作爲FedEx api的一部分,我可以獲得打印機的原始標籤數據。將原始數據發送到FedEx標籤打印機
我只是不知道如何通過.NET發送數據到打印機(我正在使用C#)。清楚的是,這些數據已經預先格式化爲ZPL(Zebra打印機語言),我只需要將它發送給打印機即可,而不需要打開窗口。
我正在研究需要打印FEDEX運輸標籤的.NET WinForms應用程序。作爲FedEx api的一部分,我可以獲得打印機的原始標籤數據。將原始數據發送到FedEx標籤打印機
我只是不知道如何通過.NET發送數據到打印機(我正在使用C#)。清楚的是,這些數據已經預先格式化爲ZPL(Zebra打印機語言),我只需要將它發送給打印機即可,而不需要打開窗口。
C#不支持原始打印,您必須使用win32假脫機程序,詳見本知識庫文章How to send raw data to a printer by using Visual C# .NET。
希望這會有所幫助。
- 亞當
我覺得你只是想送ZPL(以下工作)直接連接到您的打印機。
private void SendPrintJob(string job)
{
TcpClient client = null;
NetworkStream ns = null;
byte[] bytes;
int bytesRead;
IPEndPoint remoteIP;
Socket sock = null;
try
{
remoteIP = new IPEndPoint(IPAddress.Parse(hostName), portNum);
sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
sock.Connect(remoteIP);
ns = new NetworkStream(sock);
if (ns.DataAvailable)
{
bytes = new byte[client.ReceiveBufferSize];
bytesRead = ns.Read(bytes, 0, bytes.Length);
}
byte[] toSend = Encoding.ASCII.GetBytes(job);
ns.Write(toSend, 0, toSend.Length);
if (ns.DataAvailable)
{
bytes = new byte[client.ReceiveBufferSize];
bytesRead = ns.Read(bytes, 0, bytes.Length);
}
}
finally
{
if(ns != null)
ns.Close();
if(sock != null && sock.Connected)
sock.Close();
if (client != null)
client.Close();
}
}
我一直使用的打印機和ZPL有一段時間了,但有一個Ruby應用程序。通過套接字將ZPL發送到打印機可以正常工作。
要檢查它的工作原理,我經常telnet到打印機並鍵入^XA^PH^XZ
來提供一個標籤。希望有所幫助。
晚了一點,但你可以使用這個CodePlex項目,方便ZPL打印 http://sharpzebra.codeplex.com/
Zebra打印機不使用後臺處理程序,它不是原始的印刷。這是一個名爲ZPL的標記。這是基於文本的,而不是二進制。