es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo imprimir una factura desde una impresora POS en .net utilizando un socket.

Tengo una API web ASP y una impresora de red (Epson TM-U220). Necesito seleccionar la impresora mediante código e imprimir una factura. Solo he intentado lo siguiente. Pero no funciona bien.
Quiero imprimir esto directamente usando una impresora POS

var servidor = "192.168.1.164";
var nombre = "www.pdf";

Socket clienteSocket = new Socket(AddressFamily.InterNetwork, 
SocketType.Stream, ProtocolType.Tcp);
clienteSocket.NoDelay = true;

IPAddress ip = IPAddress.Parse(servidor);
IPEndPoint ipep = new IPEndPoint(ip, 9100);
clienteSocket.Connect(ipep);

clienteSocket.Send(File.ReadAllBytes(nombre));
clienteSocket.Close();
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para imprimir directamente utilizando una impresora POS, puedes utilizar el siguiente código:

    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    
    public void ImprimirFactura(string direccionIPImpresora, string rutaArchivo)
    {
        IPAddress direccionIP = IPAddress.Parse(direccionIPImpresora);
        IPEndPoint ipEndPoint = new IPEndPoint(direccionIP, 9100);
    
        using (TcpClient tcpClient = new TcpClient())
        {
            tcpClient.Connect(ipEndPoint);
    
            using (FileStream fileStream = new FileStream(rutaArchivo, FileMode.Open))
            {
                int bytesRestantes = (int)fileStream.Length;
    
                using (BinaryReader binaryReader = new BinaryReader(fileStream))
                using (NetworkStream networkStream = tcpClient.GetStream())
                {
                    byte[] buffer = new byte[2048];
                    int bytesLeidos;
    
                    while (bytesRestantes > 0)
                    {
                        bytesLeidos = binaryReader.Read(buffer, 0, Math.Min(bytesRestantes, buffer.Length));
                        networkStream.Write(buffer, 0, bytesLeidos);
    
                        bytesRestantes -= bytesLeidos;
                    }
                }
            }
    
            tcpClient.Close();
        }
    }
    

    Puedes llamar a este método pasando la dirección IP de tu impresora Epson TM-U220 y la ruta del archivo que deseas imprimir. Por ejemplo:

    ImprimirFactura("192.168.1.164", "C:\\facturas\\factura.pdf");
    

    Ten en cuenta que el archivo debe estar en el formato compatible con tu impresora. En este caso, parece ser PDF.

Comments are closed.