From a0e46f7f776b6c4526e9596fb0ee0ad51e8340cf Mon Sep 17 00:00:00 2001 From: 6c <420680616@qq.com> Date: 星期四, 16 十一月 2023 18:10:51 +0800 Subject: [PATCH] 打印模板支撑图片,使用& --- src/main/java/com/product/print/util/CustomPictureRenderPolicy.java | 57 ++++++++++++++++++++++++++++ src/main/java/com/product/print/service/PrintRealizeService.java | 15 +++++-- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/product/print/service/PrintRealizeService.java b/src/main/java/com/product/print/service/PrintRealizeService.java index 9f3353b..3839b51 100644 --- a/src/main/java/com/product/print/service/PrintRealizeService.java +++ b/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)) { diff --git a/src/main/java/com/product/print/util/CustomPictureRenderPolicy.java b/src/main/java/com/product/print/util/CustomPictureRenderPolicy.java new file mode 100644 index 0000000..de58bd3 --- /dev/null +++ b/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()); + } +} -- Gitblit v1.9.2