Android通过TCP直连Deskjet 2752e打印机,使用PCL3GUI实现无交互定位文本打印失败求助
Android通过TCP直连Deskjet 2752e打印机,使用PCL3GUI实现无交互定位文本打印失败求助
各位开发大佬,我最近卡在一个Android打印需求上,折腾好几天都没解决,来求助大家!
我的需求是做一个自用的Android应用,不需要弹出系统打印设置窗口、不用离开应用,直接通过TCP连接打印机的9100端口发送原始打印数据,最好还能通过x/y坐标定位文本位置。目标打印机是Deskjet 2752e,查参数它支持HP PCL 3 GUI、HP PCLm(HP Apps/UPD)和URF(AirPrint)。
但不管我怎么调整PCL指令,打印机完全没反应——哪怕只发纯文本过去也没动静。我试过各种PCL代码变体,都没能成功触发打印。
下面是我最后尝试的代码:
private void sendPrintJob() { System.out.println("Connecting to the printer..."); try (Socket socket = new Socket("192.168.0.6", 9100)) { System.out.println("Connected."); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); out.write(generatePCL3GUI().getBytes()); out.flush(); out.close(); System.out.println("Print job successfully sent."); } catch (Exception e) { System.out.println(e); } } public String generatePCL3GUI() { StringBuilder pclCode = new StringBuilder(); pclCode.append("\u001B%-12345X@PJL JOB\r\n"); pclCode.append("@PJL ENTER LANGUAGE=PCL3GUI\r\n"); pclCode.append("\u001B*s0M"); // Set color mode to monochrome pclCode.append("\u001B*t300R"); // Set resolution to 300 dpi pclCode.append("\u001B*r0F"); // Set orientation to portrait pclCode.append("\u001B(8U"); // Select font: Courier New pclCode.append("\u001BE"); // Start of the print job pclCode.append("\u001B&a100H"); // Set position (x=100, y=100) pclCode.append("Hello, world!\r\n"); // Print text pclCode.append("\u001B%-12345X@PJL EOJ\r\n"); return pclCode.toString(); }
我主要怀疑是不是PCL3GUI的指令格式有问题?或者打印机对端口连接的方式有特殊要求?有没有大佬用过同款打印机或者熟悉PCL3GUI指令的,帮我看看哪里错了?
备注:内容来源于stack exchange,提问作者Jose Lopez
相关产品推荐
相关产品推荐

