当前位置: 代码网 > it编程>编程语言>Java > java如何调用bartender打印条码

java如何调用bartender打印条码

2026年09月02日 Java 我要评论
java调用bartender打印条码说下心得自己一个人搞了很久,终于自己搞出来了。在这过程中知道了资源有多难找,希望大家能能够轻松一些。1.安装bartender2.模版制作3.配置环境barten

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与模版即可。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com