printing - pegan - como pegar la etiqueta de mercadoenvios
EnvĂo de datos brutos a la impresora de etiquetas FedEx (6)
Estoy trabajando en una aplicación .NET WinForms que necesita para imprimir una etiqueta de envío de FEDEX. Como parte de la API de FedEx, puedo obtener datos de etiquetas sin formato para la impresora.
Simplemente no sé cómo enviar esos datos a la impresora a través de .NET (estoy usando C #). Para que quede claro, los datos ya están pre formateados en ZPL (lenguaje de impresora Zebra). Solo necesito enviarlo a la impresora sin que las ventanas lo estropeen.
C # no es compatible con la impresión en bruto, deberá usar la cola de impresión de win32, tal como se detalla en este artículo de KB. Cómo enviar datos sin formato a una impresora utilizando Visual C # .NET .
Espero que esto ayude.
-Adán
Creo que solo desea enviar el ZPL (trabajo a continuación) directamente a su impresora.
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();
}
}
Un poco tarde, pero puede usar este Proyecto CodePlex para una fácil impresión ZPL http://sharpzebra.codeplex.com/
Las impresoras Zebra no usan una cola de impresión, no es impresión en bruto. Es un marcado llamado ZPL. Está basado en texto, no binario.
He estado trabajando con una impresora y ZPL desde hace un tiempo, pero con una aplicación de Ruby. Enviar el ZPL a la impresora a través del socket funciona bien.
Para verificar que funcione, con frecuencia hago telnet a la impresora y ^XA^PH^XZ
para alimentar una sola etiqueta. Espero que ayude.