【发布时间】:2015-07-18 21:47:29
【问题描述】:
我的要求是在不使用任何基于云的服务的情况下从安卓设备打印文件。
我已经能够使用 “原始”打印协议来实现它,即只需将文件发送到端口 9100 的打印机 IP 地址。这是代码sn-p:
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();
“原始”打印协议的问题在于无法从打印机获取状态。
所以,我最近阅读了有关 IPP 和 LDR 的信息,我们可以使用它们从打印机中获取状态。
我试图找到一种使用 android 实现它们的方法,但没有成功。我已经通过this answer,但没有成功找到我的解决方案。
如果有人能指导我如何在 android 中实现 IPP 或 LDR,那将非常有帮助。
提前致谢!
【问题讨论】:
-
你想读什么样的状态? IPP 提供与 IPP 通信本身相关的通用响应状态。您可以从打印机对象或作业对象中读取属性。您可以检查作业是否已正常提交,甚至等到作业状态“完成”(=已打印)。
-
基本上我只想确认提交的作业是否已完成,即打印机是否打印了文件。在我上面提到的当前场景中,我无法获得任何类似的状态
-
@Exception 我正在尝试使用您的代码打印 pdf 文件,但它只打印字节码而不是实际的文件数据,请您在这里帮助我
-
你能告诉我这适用于什么打印机吗?我使用的是廉价的 HP 型号,它只能打印 ANSI 字符。
标签: android printing ipp-protocol