Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
a5e2631adc
@ -4,10 +4,9 @@ import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.io.file.FileNameUtil;
|
||||
import com.wmyun.farmwork.word.core.enums.BookmarkType;
|
||||
import com.wmyun.farmwork.word.core.enums.PictureProvideNameType;
|
||||
import com.wmyun.farmwork.word.core.model.AbstractExData;
|
||||
import com.wmyun.farmwork.word.core.model.BookmarkReplaceDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.ext.PictureExData;
|
||||
import com.wmyun.farmwork.word.core.model.ext.TextExData;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.apache.poi.util.Units;
|
||||
@ -15,7 +14,6 @@ import org.apache.poi.xwpf.usermodel.*;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.Text;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
@ -126,17 +124,21 @@ public class BookmarkExec {
|
||||
continue;
|
||||
}
|
||||
BookmarkReplaceDataModel model = dataMap.get(name);
|
||||
BookmarkType type = model.getType();
|
||||
// 处理文本
|
||||
if (BookmarkType.TEXT.equals(type)) {
|
||||
run.setText(model.getValue());
|
||||
if (model.getExtData() instanceof TextExData textExData) {
|
||||
BookmarkType type = textExData.getType();
|
||||
|
||||
// 处理文本
|
||||
if (BookmarkType.TEXT.equals(type)) {
|
||||
run.setText(textExData.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
// 处理图片,以嵌入式插入图片
|
||||
if (BookmarkType.PICTURE.equals(type)) {
|
||||
AbstractExData extData = model.getExtData();
|
||||
if (extData instanceof PictureExData picture && PictureProvideNameType.BOOKMARK.equals(picture.getNameType())) {
|
||||
if (model.getExtData() instanceof PictureExData pictureData) {
|
||||
BookmarkType type = pictureData.getType();
|
||||
// 处理图片,以嵌入式插入图片
|
||||
if (BookmarkType.PICTURE.equals(type)) {
|
||||
try {
|
||||
run.addPicture(new ByteArrayInputStream(picture.readAsByteArray()), XWPFDocument.PICTURE_TYPE_PNG, picture.getPictureName(), Units.toEMU(picture.getWidth()), Units.toEMU(picture.getHeight()));
|
||||
run.addPicture(new ByteArrayInputStream(pictureData.readAsByteArray()), pictureData.readPictureType(), pictureData.getPictureName(), Units.toEMU(pictureData.getWidth()), Units.toEMU(pictureData.getHeight()));
|
||||
} catch (InvalidFormatException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new RuntimeException(e);
|
||||
|
@ -1,22 +0,0 @@
|
||||
package com.wmyun.farmwork.word.core.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Classname PictureProvideNameType
|
||||
* @Description TODO
|
||||
* @Date 2025/3/4 10:06
|
||||
* @Created by violet
|
||||
*/
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum PictureProvideNameType {
|
||||
|
||||
BOOKMARK("BOOKMARK"),
|
||||
|
||||
DESCRIPTOR("DESCRIPTOR");
|
||||
|
||||
private final String type;
|
||||
}
|
@ -24,4 +24,6 @@ import lombok.Data;
|
||||
})
|
||||
public class AbstractExData {
|
||||
private BookmarkType type;
|
||||
|
||||
private String value;
|
||||
}
|
||||
|
@ -18,9 +18,5 @@ public class BookmarkReplaceDataModel {
|
||||
|
||||
private String name;
|
||||
|
||||
private BookmarkType type;
|
||||
|
||||
private String value;
|
||||
|
||||
private AbstractExData extData;
|
||||
}
|
||||
|
@ -3,14 +3,12 @@ package com.wmyun.farmwork.word.core.model.ext;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.wmyun.farmwork.word.core.enums.PictureProvideDataType;
|
||||
import com.wmyun.farmwork.word.core.enums.PictureProvideNameType;
|
||||
import com.wmyun.farmwork.word.core.model.AbstractExData;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.poi.xwpf.usermodel.Document;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
@ -30,20 +28,16 @@ public class PictureExData extends AbstractExData {
|
||||
|
||||
private PictureProvideDataType dataType;
|
||||
|
||||
private PictureProvideNameType nameType;
|
||||
|
||||
private String data;
|
||||
|
||||
@SneakyThrows
|
||||
public byte[] readAsByteArray() {
|
||||
if (PictureProvideDataType.BASE64.equals(dataType)) {
|
||||
return Base64.getDecoder().decode(data);
|
||||
return Base64.getDecoder().decode(this.getValue());
|
||||
}
|
||||
if (PictureProvideDataType.DOWNLOAD_URL.equals(dataType)) {
|
||||
return HttpUtil.downloadBytes(data);
|
||||
return HttpUtil.downloadBytes(this.getValue());
|
||||
}
|
||||
if (PictureProvideDataType.ABSOLUTE_PATH.equals(dataType)) {
|
||||
return FileUtil.readBytes(data);
|
||||
return FileUtil.readBytes(this.getValue());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -5,8 +5,10 @@ import com.wmyun.farmwork.word.core.model.BookmarkReplaceDataModel;
|
||||
import com.wmyun.farmwork.word.deprecated.core.model.gen.TagsGenDataModel;
|
||||
import com.wmyun.framework.common.pojo.CommonResult;
|
||||
import com.wmyun.module.infra.service.file.WordBookmarkService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
@ -27,11 +29,15 @@ public class WordBookmarkController {
|
||||
private WordBookmarkService service;
|
||||
|
||||
@PostMapping("/file/{fileId}")
|
||||
public CommonResult<Set<String>> requestAllBookmarks(@PathVariable("fileId") String fileId) {
|
||||
@Operation(summary = "书签替换 - 获取文件中所有书签")
|
||||
@PreAuthorize("@ss.hasPermission('infra:file:bookmark:query')")
|
||||
public CommonResult<List<BookmarkQueryDataModel>> requestAllBookmarks(@PathVariable("fileId") String fileId) {
|
||||
return CommonResult.success(service.queryAllBookmarks(fileId));
|
||||
}
|
||||
|
||||
@PostMapping("/file/{fileId}/generate")
|
||||
@Operation(summary = "书签替换 - 生成替换后文件")
|
||||
@PreAuthorize("@ss.hasPermission('infra:file:bookmark:generate')")
|
||||
public CommonResult<Object> doGenerate(@PathVariable("fileId") String fileId, @RequestBody List<BookmarkReplaceDataModel> data) {
|
||||
return CommonResult.success(service.replaceBookmarkWithContent(fileId, data));
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
package com.wmyun.module.infra.service.file;
|
||||
|
||||
import com.wmyun.farmwork.word.core.model.BookmarkQueryDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.BookmarkReplaceDataModel;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @Classname WordBookmarkService
|
||||
@ -14,7 +14,7 @@ import java.util.Set;
|
||||
|
||||
public interface WordBookmarkService {
|
||||
|
||||
Set<String> queryAllBookmarks(String fileId);
|
||||
List<BookmarkQueryDataModel> queryAllBookmarks(String fileId);
|
||||
|
||||
Long replaceBookmarkWithContent(String fileId, List<BookmarkReplaceDataModel> data);
|
||||
}
|
||||
|
@ -12,8 +12,6 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: TODO
|
||||
@ -32,9 +30,9 @@ public class WordBookmarkServiceImpl implements WordBookmarkService {
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public Set<String> queryAllBookmarks(String fileId) {
|
||||
public List<BookmarkQueryDataModel> queryAllBookmarks(String fileId) {
|
||||
FileDO fileDO = previewService.queryFileInfoByFileId(fileId);
|
||||
return BookmarkQuery.queryAll(fileService.getFileContent(fileDO.getConfigId(), fileDO.getPath())).stream().map(BookmarkQueryDataModel::getName).collect(Collectors.toSet());
|
||||
return BookmarkQuery.queryAll(fileService.getFileContent(fileDO.getConfigId(), fileDO.getPath()));
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
|
Loading…
Reference in New Issue
Block a user