时序图
代码实现
public FileDTO createNoticeLetter(NoticeCondition condition) {
FileDTO res = null;
Map philipp = getMap(condition);
FileInputStream tempFile = null;
InputStream inputStream = null;
// 获取临时存储地址
String uuid = UUID.randomUUID().toString();
String tmpdir = uuid + ".docx";
try {
// 存放到项目 resource 文件夹中
ClassPathResource classPathResource = new ClassPathResource("/docx-template/bankTemplate.docx");
inputStream = classPathResource.getInputStream();
log.info("告客户书获取模板文件输入流");
// 设置变量内容
WordprocessingMLPackage template = WordprocessingMLPackage.load(inputStream);
// 填充模板文件
Docx4JSRUtil.searchAndReplace(template, philipp);
FileOutputStream outputStream = new FileOutputStream(new File(tmpdir),true);
template.save(outputStream);
outputStream.flush();
log.info("告客户书模板文件填充完成{}", condition.getPolicyId());
//获取本地文件
tempFile = new FileInputStream(tmpdir);
FileUploadReqDTO fileUploadReqDTO = FileUploadReqDTO.builder()
.mimetype("docx")
.name("告客户书.docx")
.build();
// 转byte[]
byte[] content = readInputStream(tempFile);
fileUploadReqDTO.setContent(ArrayUtils.toObject(content));
// 上传告客户书
res = Optional.ofNullable(fileFacade.upload(fileUploadReqDTO))
.orElseThrow(() -> new ServiceException("查询告客户书失败"));
} catch (Exception e) {
log.error("告客户模板下载失败", e);
} finally {
if(null != inputStream){
try {
inputStream.close();
} catch (IOException e) {
log.error("告客户模板下载失败", e);
}
}
if (tempFile != null) {
try {
tempFile.close();
// 删除本地临时文件
File file = new File(tmpdir);
if(file.delete()){
log.info(file.getName() + " 文件已被删除!");
}else{
log.info(file.getName() + " 文件删除失败!");
}
} catch (IOException e) {
log.error("文件上传失败", e);
}
}
}
return res;
}
private Map getMap(NoticeCondition condition){
Map<String, String> philipp = Maps.<String, String>builder().put("${name}", "panda").build();
return philipp;
}
/**
* 从输入流中获取字节数组
*/
private static byte[] readInputStream(FileInputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
原文地址:http://www.cnblogs.com/pandacode/p/16880554.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性