我有一个要求,我需要从Android应用程序向打印机发送打印作业。需要打印的实际信息是非常基本的,所以没有什么特别要求 - 只是文字真的。该应用程序是一个Xamarin.Forms应用程序。
我知道我可以使用标准的Android打印框架,但这不是我需要的 - 这意味着打印机需要在设备上进行预配置,这也意味着打印预览屏幕始终显示在打印出来。
我一直在研究通过端口9100上的TCP套接字发送直接打印请求,但我似乎无法实现这一点。
是否有人在.Net Standard或Android Native中有一个如何做到这一点的工作示例?
是否还有通过此方法将打印作业发送到打印机的标准协议?
感谢。
答案 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;
}