【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:

相关推荐
咸鱼2.03 小时前
【java入门到放弃】跨域
java·开发语言
indexsunny3 小时前
互联网大厂Java求职面试实战:微服务与Spring生态全攻略
java·数据库·spring boot·安全·微服务·面试·消息队列
沐苏瑶3 小时前
Java 搜索型数据结构全解:二叉搜索树、Map/Set 体系与哈希表
java·数据结构·算法
冬夜戏雪3 小时前
实习面经记录(十)
java·前端·javascript
skiy3 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
平生不喜凡桃李4 小时前
浅谈 Linux 中 namespace 相关系统调用
java·linux·服务器
zb200641204 小时前
CVE-2024-38819:Spring 框架路径遍历 PoC 漏洞复现
java·后端·spring
2401_895521344 小时前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java·人工智能·spring
何仙鸟4 小时前
GarmageSet下载和处理
java·开发语言
wefly20174 小时前
免安装!m3u8live.cn在线 M3U8 播放器,小白也能快速上手
java·开发语言·python·json·php·m3u8·m3u8在线转换