src/main/java/com/product/print/service/PrintRealizeService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/product/print/util/CustomPictureRenderPolicy.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/product/print/service/PrintRealizeService.java
@@ -23,20 +23,24 @@ import com.product.print.config.CmnCode; import com.product.print.config.CmnConst; import com.product.print.service.ide.IPrintRealizeService; import com.product.print.util.CustomPictureRenderPolicy; import com.product.print.util.DynamicTableRenderPolicy; import com.product.print.util.FlowOpinionRenderPolicy; import com.product.print.util.TableEmptyHandler; import com.product.tool.flow.service.FlowDetailService; import com.product.util.BaseUtil; import com.product.util.SystemParamReplace; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; import java.io.File; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; @@ -221,6 +225,7 @@ Object tempKey = UUID.randomUUID(); // æ¿æ¢åçword临æ¶è·¯å¾ String localTempPathWord = Global.getSystemConfig("temp.dir", "") + File.separator + "temp_print_" + tempKey + ".docx"; replaceWord(localTempPathWord, file.getPath(), fse); file.delete(); @@ -267,7 +272,7 @@ Map<String, Object> cloneValues = new HashMap(dataFse.getValues()); //è·ååè¡¨æ°æ® Map<String, DataTableEntity> subDataMap = dataFse.getSubData(); ConfigureBuilder config = Configure.createDefault().builder(); ConfigureBuilder config = Configure.builder(); config.addPlugin('@', new FlowOpinionRenderPolicy(flowOpinion)); config.addPlugin('$', new com.deepoove.poi.policy.DynamicTableRenderPolicy() { @Override @@ -280,6 +285,8 @@ return; } }); config.addPlugin('&', new CustomPictureRenderPolicy()); config.buildGrammerRegex("(#)?([\\w\\u4e00-\\u9fa5]+)(\\.?[\\w\\u4e00-\\u9fa5\\|]*)*(#)?"); TableEmptyHandler tableEmptyHandler = new TableEmptyHandler(); if (!CollectionUtil.isEmpty(subDataMap)) { src/main/java/com/product/print/util/CustomPictureRenderPolicy.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ package com.product.print.util; import cn.hutool.extra.spring.SpringUtil; import com.deepoove.poi.converter.ObjectToPictureRenderDataConverter; import com.deepoove.poi.converter.ToRenderDataConverter; import com.deepoove.poi.data.PictureRenderData; import com.deepoove.poi.data.PictureType; import com.deepoove.poi.data.Pictures; import com.deepoove.poi.policy.PictureRenderPolicy; import com.deepoove.poi.render.RenderContext; import com.product.core.dao.BaseDao; import com.product.core.entity.FieldSetEntity; import com.product.file.service.FileManagerService; import java.io.File; import java.io.FileInputStream; import java.util.Arrays; /** * Copyright © 6c * * @Date 2023å¹´11æ16æ¥ 17:19 * @Author 6c * @Description */ public class CustomPictureRenderPolicy extends PictureRenderPolicy { private static ToRenderDataConverter<Object, PictureRenderData> converter = new ObjectToPictureRenderDataConverter(); @Override public PictureRenderData cast(Object source) throws Exception { FileManagerService fileManagerService = SpringUtil.getBean(FileManagerService.class); String templateUid = source.toString(); BaseDao baseDao = SpringUtil.getBean(BaseDao.class); FieldSetEntity attachmentFse = baseDao.getFieldSetEntity("product_sys_attachments", templateUid, false); fileManagerService.getFile(templateUid); String fileName = attachmentFse.getString("file_name"); String type = fileName.substring(fileName.lastIndexOf(".") + 1); File file = fileManagerService.getFile(attachmentFse); PictureType imgType = PictureType.PNG; if (Arrays.asList("jpg", "jpeg").contains(type)) { imgType = PictureType.JPEG; } else if ("bmp".equals(type)) { imgType = PictureType.BMP; } else if ("gif".equals(type)) { imgType = PictureType.GIF; } else if ("svg".equals(type)) { imgType = PictureType.SVG; } return converter.convert(Pictures.ofStream(new FileInputStream(file), imgType).create()); } @Override public void doRender(RenderContext<PictureRenderData> context) throws Exception { Helper.renderPicture(context.getRun(), context.getData()); } }