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());
|
}
|
}
|