我的要求是在不使用任何基于云的服务的情况下从Android设备打印文件。
我已经能够使用" Raw"来实现它。打印协议,只需将文件发送到打印机的端口 9100 的IP地址即可。以下是代码段:
client = new Socket(ip,port); //Port is 9100
byte[] mybytearray = new byte[(int) file.length()]; //create a byte array to file
fileInputStream = new FileInputStream(file);
bufferedInputStream = new BufferedInputStream(fileInputStream);
bufferedInputStream.read(mybytearray, 0, mybytearray.length); //read the file
outputStream = client.getOutputStream();
outputStream.write(mybytearray, 0, mybytearray.length); //write file to the output stream byte by byte
outputStream.flush();
bufferedInputStream.close();
outputStream.close();
" Raw"的问题打印协议是无法从打印机返回状态。
所以,我最近阅读了 IPP 和 LDR ,我们可以从打印机上获取状态。
我试图找到一种使用android实现它们的方法,但没有成功。我已经通过了this answer,但没有找到我的解决方案。
如果有人可以指导我如何在android中实现IPP或LDR,那将会非常有帮助。
提前致谢!
答案 0 :(得分:1)
IPP的一般用法:
您应该检查其他最终工作状态:中止或取消
对于原型设计,您可以使用ipptool(本机用于桌面):
# ipptool -t -d job=482 ipp://192.168.2.113/ipp job.ipp
{
OPERATION Get-Job-Attributes
GROUP operation-attributes-tag
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
ATTR uri printer-uri $uri
ATTR integer job-id $job
}
答案 1 :(得分:0)
您可以使用任何实现本地打印机协议的Android-PrintService。您不必在应用程序中实施IPP。 不幸的是,现有的Service-Apps似乎并不完美。设置和打印都不像我期望的那样工作(与iOS打印相比)。
如果您仍想要实施IPP,请阅读此question's answer。