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与模版即可。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论