feat: pdf
This commit is contained in:
parent
b82496e19e
commit
c9aaa1c696
@ -27,11 +27,11 @@ import java.util.Map;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class TemplateReplaceExecutor {
|
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());
|
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);
|
File wordFile = new File(absolutePath);
|
||||||
Map<String, Object> dataMap = new HashMap<>();
|
Map<String, Object> dataMap = new HashMap<>();
|
||||||
for (TypeText text : data.getText()) {
|
for (TypeText text : data.getText()) {
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
package com.wmyun.module.infra.controller.admin.word;
|
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.farmwork.word.core.model.gen.TagsGenDataModel;
|
||||||
import com.wmyun.framework.common.pojo.CommonResult;
|
import com.wmyun.framework.common.pojo.CommonResult;
|
||||||
import com.wmyun.module.infra.service.file.WordTemplateTagService;
|
import com.wmyun.module.infra.service.file.WordTemplateTagService;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -26,7 +24,7 @@ public class WordTemplateController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WordTemplateTagService wordService;
|
private WordTemplateTagService wordService;
|
||||||
|
|
||||||
@PostMapping("file/{fileId}")
|
@PostMapping("/file/{fileId}")
|
||||||
public CommonResult<List<TagsGenDataModel>> requestAllTags(@PathVariable("fileId") String fileId) {
|
public CommonResult<List<TagsGenDataModel>> requestAllTags(@PathVariable("fileId") String fileId) {
|
||||||
try {
|
try {
|
||||||
return CommonResult.success(wordService.queryAllTag(fileId));
|
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;
|
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 com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -14,4 +15,6 @@ import java.util.List;
|
|||||||
public interface WordTemplateTagService {
|
public interface WordTemplateTagService {
|
||||||
|
|
||||||
List<TagsGenDataModel> queryAllTag(String fileId) throws Exception;
|
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;
|
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.TemplateTagsGenerate;
|
||||||
|
import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel;
|
||||||
import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel;
|
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.dataobject.file.FileDO;
|
||||||
import com.wmyun.module.infra.dal.mysql.file.FileMapper;
|
|
||||||
import com.wmyun.module.infra.framework.file.core.client.FileClient;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
@ -32,9 +30,17 @@ public class WordTemplateTagServiceImpl implements WordTemplateTagService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private FileConfigService fileConfigService;
|
private FileConfigService fileConfigService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FileService fileService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TagsGenDataModel> queryAllTag(String fileId) throws Exception {
|
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());
|
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
||||||
byte[] content = client.getContent(file.getPath());
|
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 tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
|
||||||
Path targetPath = tempDir.resolve(name);
|
Path targetPath = tempDir.resolve(name);
|
||||||
Files.write(targetPath, content);
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
public interface PdfSplitService {
|
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 com.wmyun.module.system.controller.admin.pdf.vo.PdfResultVO;
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhouc
|
* @author zhouc
|
||||||
* @date 2025/3/1 15:42
|
* @date 2025/3/1 15:42
|
||||||
* @className PdfSplitServiceImpl
|
* @className PdfSplitServiceImpl
|
||||||
* @description
|
* @description
|
||||||
*/
|
*/
|
||||||
public class PdfSplitServiceImpl {
|
|
||||||
|
@Service
|
||||||
|
public class PdfSplitServiceImpl implements PdfSplitService{
|
||||||
public List<PdfResultVO> splitPdf(File sourceFile, String outputDir) throws IOException {
|
public List<PdfResultVO> splitPdf(File sourceFile, String outputDir) throws IOException {
|
||||||
List<PdfResultVO> results = new ArrayList<>();
|
List<PdfResultVO> results = new ArrayList<>();
|
||||||
try (PDDocument document = PDDocument.load(sourceFile)) {
|
try (PDDocument document = PDDocument.load(sourceFile)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user