在线编辑pdf版本

This commit is contained in:
gaojiabao
2023-06-01 15:30:20 +08:00
parent b97a30b2c2
commit fb92e09a5e
5 changed files with 89 additions and 23 deletions
@@ -761,4 +761,11 @@ public class AttFileEOController {
return Result.success(attFileEO);
}
@ApiOperation(value = "word转换pdf")
@GetMapping("/wordConversionFilePdf")
public ResponseMessage<AttFileVo> wordConversionFilePdf(@Param("fileId") String fileId) {
AttFileVo attFileVo = attFileEOService.wordConversionFilePdf(fileId);
return Result.success(attFileVo);
}
}
@@ -34,4 +34,6 @@ public interface IAttFileEOService extends IService<AttFileEO> {
void downLoadFileList(List<AttFileEO> multiFileInfos, String fileNowPath) throws IOException;
void deleteById(String id);
AttFileVo wordConversionFilePdf(String fileId);
}
@@ -8,6 +8,9 @@ import com.adc.da.sys.constant.ValidFlagEnum;
import com.adc.da.util.FileUtil;
import com.adc.da.util.UUIDUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
@@ -19,10 +22,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;
import java.util.*;
@Service("attFileEOService")
@@ -594,5 +594,47 @@ public class AttFileEOServiceImpl extends ServiceImpl<AttFileEODao, AttFileEO> i
return attFileVo;
}
@Override
public AttFileVo wordConversionFilePdf(String fileId) {
String src = "/data/slrs/file";
AttFileEO fileInfo = getFileInfo(fileId);
AttFileVo attFileVoPdf = null;
if(fileInfo != null){
File fileWord = new File(src+fileInfo.getFilePath()+fileInfo.getFileName());
AttFileVo attFileVo = saveFileInfo(fileWord);
// 保存后 开始转换为 pdf版本
File inputWord = new File(src+attFileVo.getFilePath()+attFileVo.getFileName());
String filePdfName = "";
if(StringUtils.isNotBlank(attFileVo.getFileName())){
String[] split = attFileVo.getFileName().split("\\.");
filePdfName = split[0]+".pdf";
}
File outputFile = new File(src+fileInfo.getFilePath(),filePdfName);
try {
InputStream docxInputStream = new FileInputStream(inputWord);
OutputStream outputStream = new FileOutputStream(outputFile);
IConverter converter = LocalConverter.builder().build();
converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
outputStream.close();
// 合法存入当前文件
if(outputFile.exists()){
logger.info("==================================word.docx转换成功========================");
attFileVoPdf = saveFileInfo(outputFile);
//存入成功以后 删除word 版本
if(attFileVoPdf != null) {
if (inputWord.exists()) {
inputWord.delete();
deleteById(attFileVo.getId());
logger.info("==================================word.docx删除成功========================");
}
}
}
} catch (Exception e) {
log.error(e.getMessage(),e);
e.printStackTrace();
}
}
return attFileVoPdf;
}
}