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 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 context) throws Exception { Helper.renderPicture(context.getRun(), context.getData()); } }