youjianchi
10 months ago
4 changed files with 102 additions and 101 deletions
@ -1,96 +1,96 @@ |
|||||
package com.ruoyi.common.utils; |
//package com.ruoyi.common.utils;
|
||||
|
//
|
||||
import com.jacob.activeX.ActiveXComponent; |
//import com.jacob.activeX.ActiveXComponent;
|
||||
import com.jacob.com.ComThread; |
//import com.jacob.com.ComThread;
|
||||
import com.jacob.com.Dispatch; |
//import com.jacob.com.Dispatch;
|
||||
import org.springframework.stereotype.Component; |
//import org.springframework.stereotype.Component;
|
||||
|
//
|
||||
import java.io.File; |
//import java.io.File;
|
||||
import java.lang.reflect.Field; |
//import java.lang.reflect.Field;
|
||||
import java.util.List; |
//import java.util.List;
|
||||
|
//
|
||||
@Component |
//@Component
|
||||
public class BartenderUtils { |
//public class BartenderUtils {
|
||||
|
//
|
||||
public BartenderUtils() { |
// public BartenderUtils() {
|
||||
// TODO Auto-generated constructor stub
|
// // TODO Auto-generated constructor stub
|
||||
} |
// }
|
||||
|
//
|
||||
public static int printQRcodeLabel(List<Object> valueArray) { |
// public static int printQRcodeLabel(List<Object> valueArray) {
|
||||
int result=1; |
// int result=1;
|
||||
// 要运行COM组件,需要先将jacob-1.19-x64.dll放到jdk的bin目录下,不然会报错。如果是32位jdk放入32位的dll文件
|
// // 要运行COM组件,需要先将jacob-1.19-x64.dll放到jdk的bin目录下,不然会报错。如果是32位jdk放入32位的dll文件
|
||||
ComThread.InitSTA(); |
// ComThread.InitSTA();
|
||||
// 加载Bartender进程,需要先安装Bartender,我安装的是BT2019R4版本。
|
// // 加载Bartender进程,需要先安装Bartender,我安装的是BT2019R4版本。
|
||||
ActiveXComponent btApp = new ActiveXComponent("BarTender.Application"); |
// ActiveXComponent btApp = new ActiveXComponent("BarTender.Application");
|
||||
System.out.println(valueArray); |
// System.out.println(valueArray);
|
||||
|
//
|
||||
// 加载Bartender模板控件
|
// // 加载Bartender模板控件
|
||||
Dispatch btFormats = btApp.getProperty("Formats").toDispatch(); |
// Dispatch btFormats = btApp.getProperty("Formats").toDispatch();
|
||||
/** |
// /**
|
||||
* format方法: 1、 Print方法:这个就是最常用的打印方法,里面可设置打印的任务名,是否等待打印完成,等待超时时间,打印过程输出的信息。 2、 |
// * format方法: 1、 Print方法:这个就是最常用的打印方法,里面可设置打印的任务名,是否等待打印完成,等待超时时间,打印过程输出的信息。 2、
|
||||
* PrintOut方法:如果你需要在打印时出现打印设置对话框和状态框,你可以选择这个方法来实现。 3、Save方法:保存对Format的更改。 |
// * PrintOut方法:如果你需要在打印时出现打印设置对话框和状态框,你可以选择这个方法来实现。 3、Save方法:保存对Format的更改。
|
||||
* 4、SetNamedSubStringValue方法:设置某个特定的SubString的值,这里就可以作为一个动态改变打印内容的方法。 |
// * 4、SetNamedSubStringValue方法:设置某个特定的SubString的值,这里就可以作为一个动态改变打印内容的方法。
|
||||
* 5、SetPromt方法:跟SetNamedSubStringValue方法类似,不过他设置的是打印提示的值,某些标签通过设置可以在打印的时候弹出对话框,输入某些变量的值来改变打印内容,这个方法就是动态设置这些变量的。不过在集成中比较少用。 |
// * 5、SetPromt方法:跟SetNamedSubStringValue方法类似,不过他设置的是打印提示的值,某些标签通过设置可以在打印的时候弹出对话框,输入某些变量的值来改变打印内容,这个方法就是动态设置这些变量的。不过在集成中比较少用。
|
||||
* 6、IdenticalCopiesOfLabel属性:这个是设置打印时要打印多少份相同的标签的,默认为标签设置。 |
// * 6、IdenticalCopiesOfLabel属性:这个是设置打印时要打印多少份相同的标签的,默认为标签设置。
|
||||
* 7、NumberSerializedLabels属性:这个是序列化打印时使用的,当你的标签启动了序列化后,这个属性代表的就是打印的份数,譬如你的序列化初始数据是1,增量为1,NumberSerializedLabels设置为5,那么就会打印出1、2、3、4、5,五个标签出来。 |
// * 7、NumberSerializedLabels属性:这个是序列化打印时使用的,当你的标签启动了序列化后,这个属性代表的就是打印的份数,譬如你的序列化初始数据是1,增量为1,NumberSerializedLabels设置为5,那么就会打印出1、2、3、4、5,五个标签出来。
|
||||
* 8、Printer属性:指定要使用的打印机,默认为软件指定的默认打印机。 |
// * 8、Printer属性:指定要使用的打印机,默认为软件指定的默认打印机。
|
||||
* 9、PrintToFile属性:标示是马上用打印机打印出实物,还是生成一个打印文件。 |
// * 9、PrintToFile属性:标示是马上用打印机打印出实物,还是生成一个打印文件。
|
||||
*/ |
// */
|
||||
|
//
|
||||
try { |
// try {
|
||||
//File file = ResourceUtils.getFile("classpath:static/ruiyi/code.btw");
|
// //File file = ResourceUtils.getFile("classpath:static/ruiyi/code.btw");
|
||||
// File file = ResourceUtils.getFile("classpath:static/ruiyi/code2.btw");
|
//// File file = ResourceUtils.getFile("classpath:static/ruiyi/code2.btw");
|
||||
// ClassPathResource classPathResource = new ClassPathResource("static/ruiyi/code2.btw");
|
//// ClassPathResource classPathResource = new ClassPathResource("static/ruiyi/code2.btw");
|
||||
File file=new File("D:\\work\\code2.btw"); |
// File file=new File("D:\\work\\code2.btw");
|
||||
if(file.exists()) { |
// if(file.exists()) {
|
||||
// 调用模板
|
// // 调用模板
|
||||
|
//
|
||||
Dispatch btFormat = Dispatch.call(btFormats, "Open", |
// Dispatch btFormat = Dispatch.call(btFormats, "Open",
|
||||
file.getPath(), false, "") |
// file.getPath(), false, "")
|
||||
.toDispatch(); |
// .toDispatch();
|
||||
List<Object> codeList= (List<Object>) valueArray.get(0); |
// List<Object> codeList= (List<Object>) valueArray.get(0);
|
||||
|
//
|
||||
for(int i=0;i<codeList.size();i++) { |
// for(int i=0;i<codeList.size();i++) {
|
||||
|
//
|
||||
Object obj=codeList.get(i); |
// Object obj=codeList.get(i);
|
||||
|
//
|
||||
// // 传递参数,参数名称要和Bartender中设置的名称一样,不然会失败
|
//// // 传递参数,参数名称要和Bartender中设置的名称一样,不然会失败
|
||||
// Dispatch.call(btFormat, "SetNamedSubStringValue", "box_id", temp.getBox_id());
|
//// Dispatch.call(btFormat, "SetNamedSubStringValue", "box_id", temp.getBox_id());
|
||||
// Dispatch.call(btFormat, "SetNamedSubStringValue", "batch", "123");
|
//// Dispatch.call(btFormat, "SetNamedSubStringValue", "batch", "123");
|
||||
// Dispatch.call(btFormat, "SetNamedSubStringValue", "vendor", "a0060");
|
//// Dispatch.call(btFormat, "SetNamedSubStringValue", "vendor", "a0060");
|
||||
|
//
|
||||
Class cls = obj.getClass(); |
// Class cls = obj.getClass();
|
||||
Field[] fields = cls.getDeclaredFields(); |
// Field[] fields = cls.getDeclaredFields();
|
||||
for (int j=0;j<fields.length;j++){ |
// for (int j=0;j<fields.length;j++){
|
||||
Field field=fields[j]; |
// Field field=fields[j];
|
||||
field.setAccessible(true); |
// field.setAccessible(true);
|
||||
System.out.println(field.getName()); |
// System.out.println(field.getName());
|
||||
System.out.println(field.get(obj)); |
// System.out.println(field.get(obj));
|
||||
Dispatch.call(btFormat, "SetNamedSubStringValue", field.getName(), field.get(obj)); |
// Dispatch.call(btFormat, "SetNamedSubStringValue", field.getName(), field.get(obj));
|
||||
} |
// }
|
||||
|
//
|
||||
// 设置打印份数,默认是1份可以不设置
|
// // 设置打印份数,默认是1份可以不设置
|
||||
Dispatch printSetup = Dispatch.get(btFormat, "PrintSetup").toDispatch(); |
// Dispatch printSetup = Dispatch.get(btFormat, "PrintSetup").toDispatch();
|
||||
Dispatch.put(printSetup, "IdenticalCopiesOfLabel", 2); |
// Dispatch.put(printSetup, "IdenticalCopiesOfLabel", 2);
|
||||
|
//
|
||||
// 打印,Bartender会自动选择模板中设置的打印机打印
|
// // 打印,Bartender会自动选择模板中设置的打印机打印
|
||||
Dispatch.call(btFormat, "PrintOut", false, false); // 第二个参数设置是否跳出打印属性;
|
// Dispatch.call(btFormat, "PrintOut", false, false); // 第二个参数设置是否跳出打印属性;
|
||||
} |
// }
|
||||
|
//
|
||||
|
//
|
||||
// 打印完成,关闭模板控件
|
// // 打印完成,关闭模板控件
|
||||
Dispatch.call(btFormat, "Close", 0); |
// Dispatch.call(btFormat, "Close", 0);
|
||||
|
//
|
||||
// 关闭Bartender进程
|
// // 关闭Bartender进程
|
||||
Dispatch.call(btApp, "Quit", 0); |
// Dispatch.call(btApp, "Quit", 0);
|
||||
return result; |
// return result;
|
||||
} |
// }
|
||||
} catch (IllegalAccessException e) { |
// } catch (IllegalAccessException e) {
|
||||
// TODO Auto-generated catch block
|
// // TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
// e.printStackTrace();
|
||||
return 0; |
// return 0;
|
||||
} |
// }
|
||||
return 0; |
// return 0;
|
||||
} |
// }
|
||||
|
//
|
||||
} |
//}
|
||||
|
Loading…
Reference in new issue