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