我正在开发一个需要打印FEDEX运输标签的.NET WinForms应用程序。作为FedEx api的一部分,我可以获得打印机的原始标签数据。
我只是不知道如何通过.NET将数据发送到打印机(我正在使用C#)。需要说明的是,数据已预先格式化为ZPL(Zebra打印机语言),我只需要将其发送到打印机而不会将其弄糟。
答案 0 :(得分:10)
C#不支持原始打印,您必须使用win32假脱机程序,详见此知识库文章How to send raw data to a printer by using Visual C# .NET。
希望这有帮助。
- 亚当
答案 1 :(得分:2)
答案 2 :(得分:1)
我想您只想将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();
}
}
答案 3 :(得分:0)
我一直在使用打印机和ZPL一段时间,但使用的是Ruby应用程序。通过套接字将ZPL发送到打印机工作正常。
要检查它是否有效,我经常远程登录到打印机并输入^XA^PH^XZ
来提供单个标签。希望有所帮助。
答案 4 :(得分:0)
有点晚了,但您可以使用此CodePlex项目轻松进行ZPL打印 http://sharpzebra.codeplex.com/
答案 5 :(得分:0)
Zebra打印机不使用假脱机程序,它不是原始打印。这是一个名为ZPL的标记。它是基于文本的,而不是二进制的。