第零步:
下载Jacobhttps://download.csdn.net/download/Bof_jangle/88612066
第一步:通过mvn命令将包中的jar包添加到maven仓库,mvn命令如下
mvn install:install-file -DgroupId=com.jacob -DartifactId=jacob -Dversion=1.19 -Dpackaging=jar -Dfile=jacob.jar
第二步:复制jacob-1.19-x64.dll和jacob-1.19-x86.dll文件放到C:\WINDOWS\System32目录下
第三步:
<dependency>
<groupId>com.jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.19</version>
</dependency>
第四步(支持JDK8,不支持JDK11):
package socket;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
public class BartenderUtils {
public static void printTag(String serNo, String f5, String f1) {
// 要运行COM组件,需要先添加jacob包
ComThread.InitSTA();
// 加载Bartender进程,需要先安装Bartender。
ActiveXComponent btApp = new ActiveXComponent("BarTender.Application");
// 加载Bartender模板控件
Dispatch btFormats = btApp.getProperty("Formats").toDispatch();
// 调用模板,bo.getTemplatePath()方法(获取模版路径)你自己定义
Dispatch btFormat = Dispatch.call(btFormats, "Open", "D:/plc/plc01.btw", false, "").toDispatch();
// 传递参数,参数名称要和Bartender中设置的名称一样,不然会失败,bo是打印对象
// 首轮最大
Dispatch.call(btFormat, "SetNamedSubStringValue", "dtd5", f1);
// 末轮最大
Dispatch.call(btFormat, "SetNamedSubStringValue", "dtd4", f5);
// 时间
Dispatch.call(btFormat, "SetNamedSubStringValue", "dtd3", serNo.substring(serNo.length() - 14));
// 序号
Dispatch.call(btFormat, "SetNamedSubStringValue", "dtd2", serNo.substring(0, serNo.length() - 14));
// 二维码
Dispatch.call(btFormat, "SetNamedSubStringValue", "dtd1", serNo);
// 设置打印份数,默认是1份可以不设置
Dispatch printSetup = Dispatch.get(btFormat, "PrintSetup").toDispatch();
Dispatch.put(printSetup, "IdenticalCopiesOfLabel", 1);
// 打印,Bartender会自动选择模板中设置的打印机打印
Dispatch.call(btFormat, "PrintOut", false, false);
// 打印完成,关闭模板控件
Dispatch.call(btFormat, "Close", 0);
// 关闭Bartender进程
Dispatch.call(btApp, "Quit", 0);
}
}
第五步:具名数据源
创建好标签和具名数据源之后,用鼠标拖动具名数据源,移动到对应的标签内容上即可完成映射。
Dispatch.call(btFormat, "SetNamedSubStringValue", "dtd5", f1);
代码中的dtd5就是具名数据源的名称,f1就是要传递的变值。这样一一映射就好了(二维码也一样,直接传值就OK了)。
参考文献: