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