直接将打印作业发送到打印机(TCP)

时间:2018-04-17 09:34:11

标签: c# android xamarin printing tcp

我有一个要求,我需要从Android应用程序向打印机发送打印作业。需要打印的实际信息是非常基本的,所以没有什么特别要求 - 只是文字真的。该应用程序是一个Xamarin.Forms应用程序。

我知道我可以使用标准的Android打印框架,但这不是我需要的 - 这意味着打印机需要在设备上进行预配置,这也意味着打印预览屏幕始终显示在打印出来。

我一直在研究通过端口9100上的TCP套接字发送直接打印请求,但我似乎无法实现这一点。

是否有人在.Net Standard或Android Native中有一个如何做到这一点的工作示例?

是否还有通过此方法将打印作业发送到打印机的标准协议?

感谢。

2 个答案:

答案 0 :(得分:0)

尝试一下:

                var ipAddress = "XXX.XXX.XXX.XXX";
                var port = 9100;
                var fle = "file.pdf";

                var data = System.IO.File.ReadAllBytes(fle);

                var client = new System.Net.Sockets.TcpClient();
                client.Connect(ipAddress, port);

                var stream = client.GetStream();
                stream.Write(data, 0, data.Length);

                client.Close();

答案 1 :(得分:0)

public static bool SendTestPage(string target) {
    string msg = "\n" +
                "################################\n" +
                "\x001BE1" + //bold on
                "This is a print test\n\n" +
                "\x001BE0" + //bold off
                DateTime.Now.ToLongTimeString() + "\n" +
                DateTime.Now.ToLongDateString() + "\n" +
                "################################\n" +
                "\n\n\n\n\n\n\n\n" +
                "\x1Bm\0\0"; //cut

    Byte[] data = Encoding.ASCII.GetBytes(msg);

    try {
        TcpClient client = new TcpClient();
        client.Connect(target, 9100);

        NetworkStream stream = client.GetStream();
        stream.Write(data, 0, data.Length);

        stream.Flush();
        stream.Close();
        client.Close();

    } catch {
        return false;
    }

    return true;
}