我正在研究需要打印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的标记。这是基于文本的,而不是二进制。