FedEx 라벨 프린터에 원시 데이터를 보냅니다
-
02-07-2019 - |
문제
FedEx 배송 레이블을 인쇄 해야하는 .NET WinForms 앱에서 작업하고 있습니다. FedEx API의 일환으로 프린터의 원시 레이블 데이터를 얻을 수 있습니다.
.NET을 통해 해당 데이터를 프린터로 전송하는 방법을 모르겠습니다 (C#을 사용하고 있습니다). 명확하게 말하면, 데이터는 이미 zpl (zebra printer language)으로 사전 포맷되어 있습니다.
해결책
C#은 원시 인쇄를 지원하지 않으므로이 KB 기사에 자세히 설명 된대로 Win32 Spooler를 사용해야합니다. 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();
}
}
조금 늦었지만이 CodePlex 프로젝트를 사용하여 쉬운 ZPL 인쇄를 사용할 수 있습니다.http://sharpzebra.codeplex.com/
얼룩말 프린터는 스풀러를 사용하지 않으며 원시 인쇄가 아닙니다. ZPL이라는 마크 업입니다. 이진이 아닌 텍스트 기반입니다.
나는 한동안 프린터와 ZPL과 함께 일해 왔지만 루비 앱으로 작업 해 왔습니다. 소켓을 통해 ZPL을 프린터로 보내는 것이 잘 작동합니다.
그것이 작동하는지 확인하기 위해 종종 프린터와 유형에 텔넷 ^XA^PH^XZ
단일 레이블을 먹이기 위해. 도움이되기를 바랍니다.
제휴하지 않습니다 StackOverflow