【Java 工具类】Java通过 TCP/IP 调用斑马打印机(完整实现)

java 复制代码
package org.jeecg.modules.utils;


import cn.hutool.core.io.IoUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.nio.charset.StandardCharsets;

/**
 * @Description: ZebraDesigner 斑马打印机 工具类
 * @Author: Wang Yuhuang
 * @Date: 2025-10-24
 * @Version: V1.0
 */
@Slf4j
public class ZebraDesignerUtil {

    // 打印机配置
    private static final String PRINTER_IP = "192.168.xx.xx";
    private static final int PRINTER_PORT = 9100;
    private static final int TIMEOUT_MS = 5000; // 5秒超时

    /**
     * 向斑马打印机发送ZPL命令
     *
     * @param printerIp  打印机IP地址
     * @param port       端口号(通常是9100)
     * @param zplCommand ZPL指令字符串
     */
    public static boolean sendZplCommand(String printerIp, int port, String zplCommand) {
        Socket socket = null;
        OutputStream out = null;
        try {
            // 建立TCP连接
            socket = new Socket();
            socket.connect(new InetSocketAddress(printerIp, port), TIMEOUT_MS);
            // 获取输出流
            out = socket.getOutputStream();
            // 发送ZPL命令
            byte[] command = zplCommand.getBytes(StandardCharsets.UTF_8);
            out.write(command);
            out.flush();
            return true;
        } catch (SocketTimeoutException e) {
            log.error("连接打印机超时 ({}ms): {}:{}", TIMEOUT_MS, printerIp, port, e);
            return false;
        } catch (IOException e) {
            log.error("打印失败! 打印机地址: {}:{}, 错误: {}", printerIp, port, e.getMessage(), e);
            return false;
        } finally {
            // Hutool 关闭资源
            IoUtil.close(out);
            IoUtil.close(socket);
        }
    }

    public static void main(String[] args) {
        // ZPL指令:打印一行文字
        String zplData = "^XA\n" +
                "^FX Third section with bar code.\n" +
                "^BY5,2,270\n" +
                "^FO100,550^BC^FD12345678^FS\n" +
                "^XZ";
        //发送指令
        boolean success = sendZplCommand(PRINTER_IP, PRINTER_PORT, zplData);
    }

}

ZPL:

相关推荐
好好研究7 小时前
Spring Boot - Thymeleaf模板引擎
java·spring boot·后端·thymeleaf
爬山算法7 小时前
Hibernate(76)如何在混合持久化环境中使用Hibernate?
java·后端·hibernate
编程彩机7 小时前
互联网大厂Java面试:从分布式缓存到消息队列的技术场景解析
java·redis·面试·kafka·消息队列·微服务架构·分布式缓存
她说..7 小时前
策略模式+工厂模式实现单接口适配多审核节点
java·spring boot·后端·spring·简单工厂模式·策略模式
坚持就完事了7 小时前
Java的OOP
java·开发语言
像少年啦飞驰点、8 小时前
零基础入门 Spring Boot:从“Hello World”到可部署微服务的完整学习路径
java·spring boot·微服务·编程入门·后端开发
undsky_8 小时前
【RuoYi-SpringBoot3-Pro】:将 AI 编程融入传统 java 开发
java·人工智能·spring boot·ai·ai编程
不光头强8 小时前
shiro学习要点
java·学习·spring
工一木子8 小时前
Java 的前世今生:从 Oak 到现代企业级语言
java·开发语言
H Journey8 小时前
Linux su 命令核心用法总结
java·linux·服务器·su