feat: pdf
This commit is contained in:
parent
b82496e19e
commit
c9aaa1c696
@ -27,11 +27,11 @@ import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class TemplateReplaceExecutor {
|
||||
public String doReplace(@NotNull String absolutePath, TemplateExecDataModel data) {
|
||||
public static String doReplace(@NotNull String absolutePath, TemplateExecDataModel data) {
|
||||
return doReplace(absolutePath, data, DefaultConfig.def());
|
||||
}
|
||||
|
||||
private String doReplace(@NotNull String absolutePath, TemplateExecDataModel data, Configure def) {
|
||||
private static String doReplace(@NotNull String absolutePath, TemplateExecDataModel data, Configure def) {
|
||||
File wordFile = new File(absolutePath);
|
||||
Map<String, Object> dataMap = new HashMap<>();
|
||||
for (TypeText text : data.getText()) {
|
||||
|
@ -1,14 +1,12 @@
|
||||
package com.wmyun.module.infra.controller.admin.word;
|
||||
|
||||
import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel;
|
||||
import com.wmyun.framework.common.pojo.CommonResult;
|
||||
import com.wmyun.module.infra.service.file.WordTemplateTagService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -26,7 +24,7 @@ public class WordTemplateController {
|
||||
@Autowired
|
||||
private WordTemplateTagService wordService;
|
||||
|
||||
@PostMapping("file/{fileId}")
|
||||
@PostMapping("/file/{fileId}")
|
||||
public CommonResult<List<TagsGenDataModel>> requestAllTags(@PathVariable("fileId") String fileId) {
|
||||
try {
|
||||
return CommonResult.success(wordService.queryAllTag(fileId));
|
||||
@ -36,4 +34,13 @@ public class WordTemplateController {
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/file/{fileId}/generate")
|
||||
public CommonResult<Object> doGenerate(@PathVariable("fileId") String fileId, @RequestBody TemplateExecDataModel data) {
|
||||
try {
|
||||
return CommonResult.success(wordService.generateNew(fileId, data));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return CommonResult.error(500, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.wmyun.module.infra.service.file;
|
||||
|
||||
import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel;
|
||||
|
||||
import java.util.List;
|
||||
@ -14,4 +15,6 @@ import java.util.List;
|
||||
public interface WordTemplateTagService {
|
||||
|
||||
List<TagsGenDataModel> queryAllTag(String fileId) throws Exception;
|
||||
|
||||
Long generateNew(String fileId, TemplateExecDataModel data) throws Exception;
|
||||
}
|
||||
|
@ -1,17 +1,15 @@
|
||||
package com.wmyun.module.infra.service.file;
|
||||
|
||||
import com.wmyun.farmwork.word.core.TemplateReplaceExecutor;
|
||||
import com.wmyun.farmwork.word.core.TemplateTagsGenerate;
|
||||
import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel;
|
||||
import com.wmyun.framework.common.util.io.IoUtils;
|
||||
import com.wmyun.module.infra.dal.dataobject.file.FileDO;
|
||||
import com.wmyun.module.infra.dal.mysql.file.FileMapper;
|
||||
import com.wmyun.module.infra.framework.file.core.client.FileClient;
|
||||
import jakarta.annotation.Resource;
|
||||
import jodd.io.IOUtil;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
@ -32,9 +30,17 @@ public class WordTemplateTagServiceImpl implements WordTemplateTagService {
|
||||
@Autowired
|
||||
private FileConfigService fileConfigService;
|
||||
|
||||
@Autowired
|
||||
private FileService fileService;
|
||||
|
||||
@Override
|
||||
public List<TagsGenDataModel> queryAllTag(String fileId) throws Exception {
|
||||
FileDO file = previewService.queryFileInfoByFileId(fileId);
|
||||
|
||||
return TemplateTagsGenerate.execAllTags(saveFileToLocalTmp(fileId));
|
||||
}
|
||||
|
||||
private String saveFileToLocalTmp(String fileId) throws Exception {
|
||||
FileDO file = getFileInfo(fileId);
|
||||
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
||||
byte[] content = client.getContent(file.getPath());
|
||||
|
||||
@ -42,6 +48,22 @@ public class WordTemplateTagServiceImpl implements WordTemplateTagService {
|
||||
Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
|
||||
Path targetPath = tempDir.resolve(name);
|
||||
Files.write(targetPath, content);
|
||||
return TemplateTagsGenerate.execAllTags(targetPath.toAbsolutePath().toString());
|
||||
|
||||
return targetPath.toString();
|
||||
}
|
||||
|
||||
private FileDO getFileInfo(String fileId) {
|
||||
return previewService.queryFileInfoByFileId(fileId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long generateNew(String fileId, TemplateExecDataModel data) throws Exception {
|
||||
String inputPath = saveFileToLocalTmp(fileId);
|
||||
String outputPath = TemplateReplaceExecutor.doReplace(inputPath, data);
|
||||
FileDO fileInfo = getFileInfo(fileId);
|
||||
File file = new File(outputPath);
|
||||
byte[] content = Files.readAllBytes(file.toPath());
|
||||
String url = fileService.createFile(fileInfo.getName(), outputPath, content);
|
||||
return 0L;
|
||||
}
|
||||
}
|
||||
|
@ -9,9 +9,9 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public interface PdfSplitService {
|
||||
List<PdfResultVO> splitPdf(File sourceFile, String outputDir);
|
||||
List<PdfResultVO> splitPdf(File sourceFile, String outputDir) throws IOException;
|
||||
|
||||
void splitPdfByPages(File sourceFile, String outputDir, int startPage, int endPage);
|
||||
void splitPdfByPages(File sourceFile, String outputDir, int startPage, int endPage) throws IOException;
|
||||
|
||||
void splitAllPages(File sourceFile, String outputDir);
|
||||
void splitAllPages(File sourceFile, String outputDir) throws IOException;
|
||||
}
|
||||
|
@ -2,19 +2,23 @@ package com.wmyun.module.system.service.pdf;
|
||||
|
||||
import com.wmyun.module.system.controller.admin.pdf.vo.PdfResultVO;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2025/3/1 15:42
|
||||
* @className PdfSplitServiceImpl
|
||||
* @description
|
||||
*/
|
||||
public class PdfSplitServiceImpl {
|
||||
|
||||
@Service
|
||||
public class PdfSplitServiceImpl implements PdfSplitService{
|
||||
public List<PdfResultVO> splitPdf(File sourceFile, String outputDir) throws IOException {
|
||||
List<PdfResultVO> results = new ArrayList<>();
|
||||
try (PDDocument document = PDDocument.load(sourceFile)) {
|
||||
|
Loading…
Reference in New Issue
Block a user