java如何调用bartender打印条码

 更新时间:2026年09月02日 10:45:43   作者:邓又又  
还在为Java调用Bartender打印标签发愁?本文分享从安装、模板制作到环境配置的完整流程,包括DLL注册、jacob版本匹配等关键步骤,并附上核心代码示例,帮你快速解决打印不出来的问题,轻松实现标签打印

java调用bartender打印条码

说下心得自己一个人搞了很久,终于自己搞出来了。

在这过程中知道了资源有多难找,希望大家能能够轻松一些。

1.安装bartender

2.模版制作

3.配置环境

bartender环境注册:

  • 将bartender的两个dll文件放在C:/windows/system32文件夹下,且注册dll文件。
  • Interop.BarTender.dll以及Seagull.BarTender.Print.dll。
  • 如果注册不了,自行查找方法,网上有很多。

java:

  • jacob.dll文件也放置在上述路径下,java安装目录的jre/bin文件夹下。
  • 还要在配置文件中导入jacob的jar包。

记住:dll以及jar版本要对应。

本人采用的是jdk8,以及jacob1.19

附以下代码

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
 * @author Bartender标签打印
 * @witer liling
 */
public class BartenderUtils {

    public static void main(String[] args) {

        BartenderUtils bu = new BartenderUtils();
        bu.printBTW();
    }

    private void printBTW() {
        //要运行COM组件,需要先添加jacob包
        ComThread.InitSTA();
        while (true) {
            PrintLabelHuaqin bo1 = new PrintLabelHuaqin();
            System.out.println("回车键进行下一步,退出程序直接关闭\n请在下方输入你的序列条码号:");
            Scanner scanner = new Scanner(System.in);

            //next方式接收字符串(加入下行代码可以接收空格)
            scanner.useDelimiter("\n");
            String down = scanner.next();
            //自动转为大写
            bo1.setDown(down.toUpperCase());

            bo1.setTemplatePath("C:\\BQ\\上标签.btw");//需要打印二维码所在本地位置
            String up = "";
            System.out.println("请在下方输入你的下标起始数:");
            Scanner scanner1 = new Scanner(System.in);
            int index = scanner1.nextInt();
            System.out.println("请在下方输入你的下标数量:");
            int num = scanner1.nextInt();
            // 创建Date对象,表示当前时间
            Date date = new Date();
            // 创建SimpleDateFormat对象,指定目标格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
            // 调用format() 方法,格式化时间,转换为指定格式字符串
            String today = sdf.format(date);
            for (int i = num; 0 < i; i--) {
                String indexNum = ""+index;
                if(indexNum.length()>10&&indexNum.length()<100){
                    indexNum="0"+indexNum;
                }else if (indexNum.length()<10&&indexNum.length()>0){
                    indexNum="00"+indexNum;
                }
                up = "5000PCS " + today + " " +indexNum;
                bo1.setUp(up);
                bo1.setNumberSerializedLabels(1);

                //加载Bartender进程,需要先安装Bartender,这边安装是BT2022版本
                ActiveXComponent btApp = new ActiveXComponent("BarTender.Application");
                System.out.println("开始打印!!!!");
                //加载Bartender模板控件
                Dispatch btFormats = btApp.getProperty("Formats").getDispatch();
                //调用模板,bo.getTemplatePath()方法(获取模板路径)自己定义
                Dispatch btFormat = Dispatch.call(btFormats, "Open", bo1.getTemplatePath(), false, "").toDispatch();
                //传递参数,参数名称要和Bartender中设置的名称一样,不然会失败,bo1是打印对象
                //客户料号
                Dispatch.call(btFormat, "SetNamedSubStringValue", "Up", bo1.getUp());
                //日期 一位年
                Dispatch.call(btFormat, "SetNamedSubStringValue", "Down", bo1.getDown());
                //Dispatch.call(btFormat, "PrintSetup", "\\printserver\\TSC MF3400");
                //页面设置,不设置时以模板默认
//                Dispatch pageSetup = Dispatch.get(btFormat, "PageSetup").toDispatch();
//                Dispatch.put(pageSetup, "LabelRows", 2);    //行数
//                Dispatch.put(pageSetup, "LabelColumns", 1); //列数
//
//                //设置打印份数和序列号,不设置已模板默认
                Dispatch printSetup = Dispatch.get(btFormat, "PrintSetup").toDispatch();
                Dispatch.put(printSetup, "NumberSerializedLabels", bo1.getNumberSerializedLabels());//打印序列号
                 Dispatch.put(printSetup, "IdenticalCopiesOfLabel", 1);  //打印份数
                //打印,Bartender会自动选择模板中设置的打印机打印
                Dispatch.call(btFormat, "PrintOut",false,false);
                //Dispatch.call(btFormat,"PrintOut",false,false);
                //打印完成,关闭模块控件
                Dispatch.call(btFormat, "Close", 0);
                //关闭Bartender进程
                Dispatch.call(btApp, "Quit", 0);
            }
            //释放资源
            ComThread.Release();
        }

    }
}

PrintLabelHuaqin是自己的普通实体类,看个人需求类中需要存储什么信息。

如有打印不出来以及打印有问题设置打印机,调整bartender与模版即可。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Kafka消费者实现过程

    Java Kafka消费者实现过程

    Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交则依赖框架,本文给大家介绍Java Kafka消费者实现过程,感兴趣的朋友一起看看吧
    2025-08-08
  • eclipse/intellij idea 远程调试hadoop 2.6.0

    eclipse/intellij idea 远程调试hadoop 2.6.0

    这篇文章主要介绍了eclipse/intellij idea 远程调试hadoop 2.6.0的相关资料,需要的朋友可以参考下
    2016-07-07
  • java中Iterator和ListIterator实例详解

    java中Iterator和ListIterator实例详解

    这篇文章主要介绍了java中Iterator和ListIterator实例详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Springboot自带定时任务实现动态配置Cron参数方式

    Springboot自带定时任务实现动态配置Cron参数方式

    这篇文章主要介绍了Springboot自带定时任务实现动态配置Cron参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java实现将HTML文件与字符串转换为图片

    Java实现将HTML文件与字符串转换为图片

    在 Java 开发中,我们经常会遇到将 HTML 内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用 Free Spire.Doc for Java 库来实现这一功能吧
    2025-08-08
  • Java实现学生信息管理系统(借助Array List)

    Java实现学生信息管理系统(借助Array List)

    这篇文章主要为大家详细介绍了Java实现学生信息管理系统,借助Array List,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java中的自动拆装箱、基本类型的转换、包装类的缓存详解

    Java中的自动拆装箱、基本类型的转换、包装类的缓存详解

    文章详细介绍了Java中数据类型的拆装箱、自动拆箱和装箱,以及包装类的缓存机制,包括基本数据类型的容量大小、转换规则和自动类型转换等
    2024-12-12
  • Android、iOS和Java通用的AES128加密解密示例代码

    Android、iOS和Java通用的AES128加密解密示例代码

    现在很多App在与服务器接口的请求和响应过程中,为了安全都会涉及到加密和解密的问题,如果不加的话就会是明文的,即使加了GZIP也可以被直接解压成明文。如果同时有Android和IOS的App的话、必须要保证加密和解密的算法一致、不然后台没法处理,下面通过这篇文章学习下。
    2016-11-11
  • Java Spring读取和存储详细操作

    Java Spring读取和存储详细操作

    这篇文章主要介绍了Spring读取和存储详细操作,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • springboot+Oauth2实现自定义AuthenticationManager和认证path

    springboot+Oauth2实现自定义AuthenticationManager和认证path

    本篇文章主要介绍了springboot+Oauth2实现自定义AuthenticationManager和认证path,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论