工作证,java实现
本帖最后由 奔跑的蜗牛119 于 2020-12-1 22:53 编辑### 日常在论坛摸鱼,看到了好玩的帖子[打工人苦,有女朋友的打工人更苦!要替女朋友做几百个工作证!没有python真的不行!](https://www.52pojie.cn/forum.php?mod=viewthread&tid=1309176&extra=&highlight=%C5%AE%C5%F3%D3%D1&page=1),闲来无事,尝试下用Java hutool 工具包来实现一下。
### 导入主要依赖
```
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-poi</artifactId>
<version>5.5.1</version>
</dependency>
```
### 上代码(对excel表格标题做了下处理,改成了英文 name、depart、job。)
```
package com.sun;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import java.awt.*;
import java.io.File;
import java.util.Arrays;
import java.util.List;
/**
* @ClassName: image
*/
public class Iimage {
private static void addText(File copyFile, String text, int y){
ImgUtil.pressText(
copyFile,
copyFile,
text, Color.black,
//字体
new Font("黑体", Font.BOLD, 50),
//x坐标修正值。 默认在中间,偏移量相对于中间偏移
50,
//y坐标修正值。 默认在中间,偏移量相对于中间偏移
y,
//透明度:alpha 必须是范围 之内(包含边界值)的一个浮点数字
1f
);
}
private static void addPic(File copyFile, File file){
ImgUtil.pressImage(
copyFile,
copyFile,
//水印图片
ImgUtil.read(file),
//x坐标修正值。 默认在中间,偏移量相对于中间偏移
5,
//y坐标修正值。 默认在中间,偏移量相对于中间偏移
-220,
1f
);
}
public static void main(String[] args) {
//读取照片列表
List<File> files = Arrays.asList(FileUtil.ls("D:\\idm下载\\Compressed\\photos\\工作证照片"));
//读取人员信息
ExcelReader reader = ExcelUtil.getReader("D:\\idm下载\\Compressed\\photos\\工作证信息.xlsx");
List<ExcelEmp> excelEmp = reader.readAll(ExcelEmp.class);
//填充数据
for (int i = 0; i < excelEmp.size(); i++) {
ExcelEmp emp = excelEmp.get(i);
File copyFile = FileUtil.copy("D:\\idm下载\\Compressed\\photos\\工作证.png", "D:\\idm下载\\Compressed\\photos\\" + emp.getName() + ".png", false);
// 姓名
addText(copyFile,emp.getName(),30);
// 部门
addText(copyFile,emp.getDepart(),130);
// 工作
addText(copyFile,emp.getJob(),220);
// 照片
addPic(copyFile,files.get(i));
}
}
}
class ExcelEmp{
private String name;
private String depart;
private String job;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepart() {
return depart;
}
public void setDepart(String depart) {
this.depart = depart;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
```
### 后续优化:将照片文件存入map集合,通过get(姓名)方式获取图片 如果能保证照片名称与excel里面的人名一致的话,可以把files处理为一个Map<String, File>,然后for里面根据人名在Map里面get 😂必须顶顶,为了女朋友 专业啊,非专业看不懂 为了女朋友学会很多技能 爱情的力量是伟大的
太专业了,小白看不懂啊{:1_925:} 谢谢分享 非专业看不懂 顶起来,给需要的人!
页:
[1]
2