package com.ruoyi.web.controller.project;
|
|
import com.itextpdf.text.DocumentException;
|
import com.ruoyi.common.config.RuoYiConfig;
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.utils.MergeFilesToPDFUtils;
|
import com.ruoyi.project.domain.MegerIsRemove;
|
import com.ruoyi.project.domain.ServiceDonateannex;
|
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
|
import com.ruoyi.project.service.IBaseOnlyvalueService;
|
import com.ruoyi.project.service.IServiceDonateannexService;
|
import com.ruoyi.project.service.IServiceDonatebaseinfoService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Comparator;
|
import java.util.List;
|
|
/**
|
* PDF合并
|
*
|
* @author ruoyi
|
* @date 2022-01-24
|
*/
|
@Slf4j
|
@Api("PDF合并")
|
@RestController
|
@RequestMapping("/project/pdfmerge")
|
public class PdfMergeController extends BaseController {
|
@Autowired
|
private IServiceDonateannexService serviceDonateannexService;
|
|
@Autowired
|
private MergeFilesToPDFUtils mergeFilesToPDFUtils;
|
|
@Autowired
|
private IBaseOnlyvalueService baseOnlyvalueService;
|
|
@Autowired
|
private IServiceDonatebaseinfoService donatebaseinfoService;
|
|
/**
|
* 图片、pdf、文档合并成pdf
|
*/
|
@ApiOperation("图片、pdf、文档合并成pdf")
|
@GetMapping("/merge")
|
public void merge(@RequestParam("infoId") Long infoId, HttpServletResponse response) {
|
log.info("merge的入参为辅:{}", infoId);
|
ServiceDonateannex serviceDonateannex = new ServiceDonateannex();
|
serviceDonateannex.setInfoid(infoId);
|
List<ServiceDonateannex> serviceDonateannexes = serviceDonateannexService.queryList(serviceDonateannex);
|
if (!CollectionUtils.isEmpty(serviceDonateannexes)) {
|
log.info("serviceDonateannexes查询的数据为:{}", serviceDonateannexes.size());
|
//根据Annexfilestype进行排序
|
Collections.sort(serviceDonateannexes, Comparator.comparingInt(ServiceDonateannex::getAnnexfilestype));
|
//获取文件存放的位置(配置文件里的Profile地址)
|
String localPath = RuoYiConfig.getProfile();
|
//用于转成一维数组
|
List<String> list = new ArrayList<>();
|
//用于记录该临时pdf文件是否删除
|
List<MegerIsRemove> megerIsRemoveList = new ArrayList<>();
|
for (ServiceDonateannex serviceDonateannex1 : serviceDonateannexes) {
|
String path = serviceDonateannex1.getAnnexurl().replace("/profile", localPath);
|
String suffix = path.substring(path.lastIndexOf("."));
|
Boolean aBoolean = false;
|
if (suffix.equals(".jpg") || suffix.equals(".JPG") || suffix.equals(".PNG") || suffix.equals(".png") || suffix.equals(".JPEG") || suffix.equals(".jpeg")) {
|
//图片处理
|
try {
|
aBoolean = mergeFilesToPDFUtils.addImageToPdf(path, getNewFileNameWithExtension(path, ".pdf"));
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
} else if (suffix.equals(".pdf") || suffix.equals(".PDF")) {
|
//pdf文件处理
|
String pdf = getNewFileNameWithExtension(path, ".pdf");
|
list.add(pdf);
|
megerIsRemoveList.add(new MegerIsRemove(false, pdf));
|
} else if (suffix.equals(".doc") || suffix.equals(".DOC") || suffix.equals(".docx") || suffix.equals(".DOCX")) {
|
//word文件处理
|
aBoolean = mergeFilesToPDFUtils.wordtoPdf(path, getNewFileNameWithExtension(path, ".pdf"));
|
}
|
if (aBoolean) {
|
//将图片和word文件的临时文件,存到集合中,以便后面删除
|
String pdf = getNewFileNameWithExtension(path, ".pdf");
|
list.add(pdf);
|
megerIsRemoveList.add(new MegerIsRemove(true, pdf));
|
}
|
}
|
//获取合并名称
|
ServiceDonatebaseinfo donatebaseinfo = donatebaseinfoService.getById(serviceDonateannexes.get(0).getInfoid());
|
|
String fileName = donatebaseinfo.getIdcardno() + donatebaseinfo.getName() + ".pdf";
|
try {
|
//文件合并
|
mergeFilesToPDFUtils.mergePdfFiles(list, fileName);
|
} catch (IOException e) {
|
e.printStackTrace();
|
} catch (DocumentException e) {
|
e.printStackTrace();
|
}
|
//删除临时文件
|
for (MegerIsRemove megerIsRemove : megerIsRemoveList) {
|
if (megerIsRemove.getIsdel()) {
|
new File(megerIsRemove.getPath()).delete();
|
}
|
}
|
}
|
}
|
|
private static String getNewFileNameWithExtension(String fileName, String extension) {
|
int dotIndex = fileName.lastIndexOf('.');
|
return dotIndex != -1 ? fileName.substring(0, dotIndex) + extension : fileName;
|
}
|
|
}
|