You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:54:38