Java 集成斑马打印机

Java 集成斑马打印机方案,有直接手搓 ZPL 命令的,也有使用 SDK 的,官方提供的有一个 zebra-linkos-mpsdk,里面有一些 demo 等,博主粗略使用一种方案是要先用 Java 画图,然后将图片给到打印机打印出来,博主还找到一些第三方的 SDK,能快速的制作出 ZPL 命令,虽然命令不全,但是有了大纲,自己补全一些其余命令也是简单的多了,能对用ZPL命令的方式提高效率

手搓ZPL命令参考网站

  1. https://labelary.com/docs.html

Link-OS 多平台 SDK

官方下载地址

demo

博主是直接在 SDK 提供的 Demo 中测试的,使用的网络发现打印机方式,案例如下,打印的图片就是 Demo 中的 斑马的 logo


import com.zebra.sdk.comm.Connection;
import com.zebra.sdk.comm.ConnectionException;
import com.zebra.sdk.printer.PrinterStatus;
import com.zebra.sdk.printer.ZebraPrinter;
import com.zebra.sdk.printer.ZebraPrinterFactory;
import com.zebra.sdk.printer.ZebraPrinterLanguageUnknownException;
import com.zebra.sdk.printer.discovery.DiscoveredPrinter;
import com.zebra.sdk.printer.discovery.DiscoveryException;
import com.zebra.sdk.printer.discovery.DiscoveryHandler;
import com.zebra.sdk.printer.discovery.NetworkDiscoverer;

import java.io.IOException;

public class PDemo2 {

    private static ZebraPrinter zebraPrinter = null;

    public static void main(String[] args) {
        extracted();
    }

    private static void extracted() {
        try {
            // 发现斑马打印机
            NetworkDiscoverer.findPrinters(new DiscoveryHandler() {
                @Override
                public void foundPrinter(DiscoveredPrinter printer) {
                    // 连接打印机
                    // 连接到打印机
                    Connection connection = printer.getConnection();
                    try {
                        connection.open();
                        zebraPrinter = ZebraPrinterFactory.getInstance(connection);

                        ZebraPrinter instance = ZebraPrinterFactory.getInstance(connection);
                        System.out.println(instance);

                        PrinterStatus printerStatus = zebraPrinter.getCurrentStatus();
                        //判断打印机目前是否能进行正常打印,如果不正常,循环睡眠至可打印为止
                        System.out.println("是否打印就绪:" + printerStatus.isReadyToPrint);
                        System.out.println("打印机缓存区是否已满:" + printerStatus.isReceiveBufferFull);
                        System.out.println("当前缓存区数量:" + printerStatus.numberOfFormatsInReceiveBuffer);
                        System.out.println("是否暂停:" + printerStatus.isPaused);
                        // 创建打印任务
                        // 在打印任务中添加打印内容
                        zebraPrinter.printImage("E:\\home\\tools\\zebra-linkos-mpsdk-jun-2024\\PC-Card\\v2.14.5198\\demos\\eclipse\\Zebra_Card_SDK_Demos\\resources\\zebra-logo-50px.png",
                                0,
                                0,
                                600,
                                600,
                                false);
//                        instance.printImage();
                    } catch (ConnectionException | ZebraPrinterLanguageUnknownException | IOException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.println(zebraPrinter);
                }

                @Override
                public void discoveryFinished() {
                    // 所有打印机都已发现,可以进行下一步操作了
                }

                @Override
                public void discoveryError(String message) {
                    // 发现打印机时发生错误
                }
            });
        } catch (DiscoveryException e) {
            // 进行错误处理
        }
    }

}

在这里插入图片描述

生成 ZPL 命令的工具

这是个 GitHub 上的大佬开源的项目,可以生成一些简单的 ZPL 指令,提供了扩展的方式,可以用以快速生成 ZPL 指令

<dependency>
    <groupId>fr.w3blog</groupId>
    <artifactId>zebra-zpl</artifactId>
    <version>0.0.1</version>
    <scope>compile</scope>
</dependency>

该 SDK 中生成的字体不能打印中文,如下字体可以打印中文,前提是打印机安装了该字体

^CW1,E:SIMSUN.TTF^CI28
	ZebraLabel zebraLabel = new ZebraLabel(912, 912);
	zebraLabel.setDefaultZebraFont(ZebraFont.ZEBRA_ZERO);

	zebraLabel.addElement(new ZebraText(10, 84, "Product:", 14));
	zebraLabel.addElement(new ZebraText(395, 85, "Camera", 14));

	zebraLabel.addElement(new ZebraText(10, 161, "CA201212AA", 14));

	//Add Code Bar 39
	zebraLabel.addElement(new ZebraBarCode39(10, 297, "CA201212AA", 118, 2, 2));

	zebraLabel.addElement(new ZebraText(10, 365, "Qté:", 11));
	zebraLabel.addElement(new ZebraText(180, 365, "3", 11));
	zebraLabel.addElement(new ZebraText(317, 365, "QA", 11));

	zebraLabel.addElement(new ZebraText(10, 520, "Ref log:", 11));
	zebraLabel.addElement(new ZebraText(180, 520, "0035", 11));
	zebraLabel.addElement(new ZebraText(10, 596, "Ref client:", 11));
	zebraLabel.addElement(new ZebraText(180, 599, "1234", 11));


    zebraLabel.getZplCode();
	
    ZebraUtils.printZpl(zebraLabel, ip, port);
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java连接斑马打印机的方法有两种:使用串口连接和使用网络连接。 1. 串口连接: 首先,需要确保计算机上有串口可以连接打印机,然后使用Java的串口通信库(如RXTX或JSerialComm)来实现串口通信。具体步骤如下: 1)安装并配置串口通信库。 2)搜索可用串口,以确定打印机所连接的串口号。 3)使用串口通信库打开指定的串口。 4)根据打印机的串口通信协议,向打印机发送指令或打印数据。 2. 使用网络连接: 在打印机上设置网络参数,使其能够与计算机连接,并确保计算机与打印机在同一网络中。然后使用Java的网络编程库来实现网络连接。具体步骤如下: 1)获取打印机的IP地址与端口号。 2)使用Java的Socket类创建与打印机的TCP连接。 3)根据打印机的协议,通过Socket发送指令或打印数据。 4)关闭Socket连接。 需要注意的是,无论是使用串口连接还是使用网络连接,都需要了解斑马打印机的通信协议和指令集,以便正确地与打印机进行通信和控制。对于串口连接,还需要在计算机上安装相应的串口驱动程序。 ### 回答2: 要使用Java连接斑马打印机,首先需要确保计算机上安装了Java开发环境(JDK)和相应的斑马打印机驱动程序。 1. 首先,需要下载并安装斑马打印机驱动程序。可以从斑马打印机的官方网站或其他可信赖的来源下载适用于自己的打印机型号的驱动程序,并按照说明进行安装。 2. 安装完成后,可以使用Java提供的打印API连接斑马打印机。首先,需要创建一个打印服务对象。 ```java PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); ``` 上述代码会返回默认的打印服务对象。如果有多个打印机可用,可以使用下面的代码来选择特定的打印机。 ```java PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null); for (PrintService service : printServices) { if (service.getName().contains("斑马打印机名称")) { printService = service; break; } } ``` 根据自己斑马打印机的名称修改代码中"斑马打印机名称"的部分。 3. 连接打印机后,可以设置打印参数和内容。例如,可以创建一个打印作业的Doc对象,并将要打印的内容传递给它。 ```java DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE; DocPrintJob printJob = printService.createPrintJob(); Doc doc = new SimpleDoc(inputStream, docFlavor, null); ``` 在上述代码中,inputStream是要打印的内容的输入流。 4. 最后,将打印作业提交给打印机。 ```java printJob.print(doc, null); ``` 通过上述步骤,我们就可以使用Java连接斑马打印机并进行打印操作。需要根据具体的打印机型号和需求进行相应的调整,确保选择正确的驱动程序和打印机服务对象。 ### 回答3: 要使用Java连接斑马打印机,可以按照以下步骤进行操作: 第一步,确定使用的通信接口。斑马打印机通常支持USB、以太网和蓝牙等多种通信方式。根据实际情况,选择与计算机连接的适当接口。 第二步,下载并安装斑马打印机驱动程序。斑马官方网站提供了不同型号打印机对应的驱动程序,可在网站上搜索并下载适用于自己打印机型号的驱动。 第三步,使用Java提供的打印机相关API进行连接。Java提供了javax.print包,其中包含了许多打印相关的类和接口。可以利用这些API进行打印机连接和操作。 第四步,编写Java程序连接打印机。首先,使用PrintServiceLookup类的方法获取计算机上可用的打印机列表。然后,通过选择合适的打印机,将其作为打印目标。接下来,创建一个PrintService对象,将其设置为默认打印服务。最后,使用PrintJob类的方法创建一个打印任务,通过提供打印数据和打印属性来设置打印内容。 第五步,测试打印功能。编写一个简单的Java程序,调用打印机连接代码,并提供需要打印的内容和属性。运行程序,如果一切正常,打印任务将被发送到斑马打印机并开始打印。 总结:要使用Java连接斑马打印机,需要下载安装对应的驱动程序,并利用Java提供的打印机API进行连接和操作。最后,编写一个测试程序,调用打印机连接代码,发送打印任务到斑马打印机进行打印。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值