Compare commits

...

1 Commits

Author SHA1 Message Date
youjianchi a24be13bec 本地分支提交 8 months ago
  1. 4
      ruoyi-admin/src/main/resources/application.yml
  2. 3
      ruoyi-admin/src/main/resources/logback.xml
  3. 4
      ruoyi-common/pom.xml
  4. 192
      ruoyi-common/src/main/java/com/ruoyi/common/utils/BartenderUtils.java

4
ruoyi-admin/src/main/resources/application.yml

@ -9,8 +9,8 @@ ruoyi:
# 实例演示开关
demoEnabled: false
# 文件路径 示例( Windows配置c:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
# profile: /Users/xiguniang/Documents/ruoyi/uploadPath
profile: /home/ruoyi/uploadPath
profile: /Users/xiguniang/Documents/ruoyi/uploadPath
# profile: /home/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false

3
ruoyi-admin/src/main/resources/logback.xml

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/ruoyi/logs" />
<!-- <property name="log.path" value="/home/ruoyi/logs" />-->
<property name="log.path" value="/Users/xiguniang/Documents/ruoyi/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

4
ruoyi-common/pom.xml

@ -24,11 +24,11 @@
</dependency>
<!--操作word文件-->
<dependency>
<!--<dependency>
<groupId>com.jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.19</version>
</dependency>
</dependency>-->
<!--操作csv文件-->

192
ruoyi-common/src/main/java/com/ruoyi/common/utils/BartenderUtils.java

@ -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方法如果你需要在打印时出现打印设置对话框和状态框你可以选择这个方法来实现 3Save方法保存对Format的更改
* 4SetNamedSubStringValue方法设置某个特定的SubString的值这里就可以作为一个动态改变打印内容的方法
* 5SetPromt方法跟SetNamedSubStringValue方法类似不过他设置的是打印提示的值某些标签通过设置可以在打印的时候弹出对话框输入某些变量的值来改变打印内容这个方法就是动态设置这些变量的不过在集成中比较少用
* 6IdenticalCopiesOfLabel属性这个是设置打印时要打印多少份相同的标签的默认为标签设置
* 7NumberSerializedLabels属性这个是序列化打印时使用的当你的标签启动了序列化后这个属性代表的就是打印的份数譬如你的序列化初始数据是1增量为1NumberSerializedLabels设置为5那么就会打印出12345五个标签出来
* 8Printer属性指定要使用的打印机默认为软件指定的默认打印机
* 9PrintToFile属性标示是马上用打印机打印出实物还是生成一个打印文件
*/
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…
Cancel
Save