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

Brother P750W标签打印机接收Java DocPrintJob的ESC/P命令无响应求助

解决Brother PT-P750W通过Java ESC/P命令无响应的问题

排查与解决步骤

1. 验证ESC/P命令格式正确性

Brother标签打印机的ESC/P命令有严格型号匹配要求,你的代码可能存在命令格式错误:

  • 确认ESC i r 12的参数是否符合PT-P750W的要求,部分型号宽度参数需用十六进制或对应不同单位,建议查阅官方手册确认正确命令。
  • 检查ESC i S 24的字号参数,PT-P750W可能仅支持特定范围的字号,超出范围会导致命令无效。
  • 在打印命令后添加换行符\n或换页符\u000C,确保打印机识别到命令结束。

2. 修复字符编码问题

直接使用系统默认编码转换字节数组可能与打印机要求的ASCII/Shift-JIS编码不匹配,需明确指定编码:

Doc doc = new SimpleDoc(escCommands.getBytes("US-ASCII"), flavor, null);

3. 确认打印服务选择准确性

  • 代码中两次遍历打印服务属于冗余操作,建议找到目标打印机后直接退出循环,并打印设备属性确认端口匹配(比如无线/USB端口是否和P-touch Editor一致):
    System.out.println("Selected printer attributes: " + brotherPrinter.getAttributes());
    
  • 若打印机存在多个连接副本,确保选中的是当前活跃使用的设备。

4. 更换为明确的Raw打印格式

DocFlavor.BYTE_ARRAY.AUTOSENSE可能让打印服务解析数据而非直接发送原始命令,改用Raw格式:

DocFlavor flavor = DocFlavor.BYTE_ARRAY.RAW;

5. 增加打印异常监控

添加打印作业监听器捕获隐性失败信息:

job.addPrintJobListener(new PrintJobAdapter() {
    @Override
    public void printJobFailed(PrintJobEvent pje) {
        System.err.println("打印任务失败,事件类型:" + pje.getPrintEventType());
    }
});

6. 对比P-touch Editor的原始输出

  • 用监控工具(如Wireshark抓网络包、USB监控工具)捕获P-touch Editor打印时发送的原始命令,与你的代码生成命令对比,定位差异。
  • 先复制P-touch Editor的原始命令用代码发送,验证正常打印后再逐步修改自定义命令。

7. 硬件与基础设置检查

  • 重启打印机清除缓存命令。
  • 确认标签纸安装正确,无卡纸、缺纸情况(硬件问题会导致打印机无动作)。
  • 在打印机设置中启用原始打印模式,部分型号需手动开启。

修正后示例代码(关键调整)

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;

import org.zyx.common.cli.Command;
import org.zyx.common.cli.CommandException;

public class CommandVialLabelPrintBrotherTest implements Command {

    @Override
    public void execute() throws CommandException {
        try {
            PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
            PrintService brotherPrinter = null;

            // 查找目标打印机
            for (PrintService printer : printServices) {
                String printerName = printer.getName();
                System.out.println("发现打印机:" + printerName);
                if (printerName.contains("Brother PT-P750W")) {
                    brotherPrinter = printer;
                    System.out.println("选中打印机:" + printerName);
                    break;
                }
            }

            if (brotherPrinter == null) {
                System.out.println("未找到Brother PT-P750W!");
                return;
            }

            DocPrintJob job = brotherPrinter.createPrintJob();

            // 修正后的ESC/P命令(需根据官方手册调整参数)
            String escCommands = "\u001B@" + // 初始化打印机
                    "\u001Bi r 12" + // 设置标签宽度
                    "\u001Bi L" + // 开始标签布局
                    "\u001Bi S 24" + // 设置字号
                    "Hello Printer" +
                    "\n" + // 添加换行确保文本结束
                    "\u001Bi d 1" + // 打印标签
                    "\u001Bi Z"; // 切纸

            // 使用RAW格式并指定ASCII编码
            DocFlavor flavor = DocFlavor.BYTE_ARRAY.RAW;
            Doc doc = new SimpleDoc(escCommands.getBytes("US-ASCII"), flavor, null);

            // 添加打印监听器
            job.addPrintJobListener(new PrintJobAdapter() {
                @Override
                public void printJobCompleted(PrintJobEvent pje) {
                    System.out.println("打印任务完成");
                }

                @Override
                public void printJobFailed(PrintJobEvent pje) {
                    System.err.println("打印任务失败,事件类型:" + pje.getPrintEventType());
                }
            });

            job.print(doc, null);
            System.out.println("原始ESC/P数据已发送至打印机!");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

内容的提问来源于stack exchange,提问作者stuckhelper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:17:05