package com.estate.expert.admin.stat.report.render;
|
|
import com.deepoove.poi.data.PictureRenderData;
|
import com.deepoove.poi.data.Pictures;
|
import com.deepoove.poi.policy.PictureRenderPolicy;
|
import com.estate.expert.admin.service.UserFileService;
|
import lombok.AllArgsConstructor;
|
|
/**
|
* 自定义图片渲染策略
|
*/
|
@AllArgsConstructor
|
public class CustomPictureRenderPolicy extends PictureRenderPolicy {
|
|
private UserFileService userFileService;
|
|
/**
|
* 渲染图片
|
* @param source 源
|
* @return 图片渲染数据
|
* @throws Exception 异常
|
*/
|
@Override
|
public PictureRenderData cast(Object source) throws Exception {
|
var id = (Integer)source;
|
var file = userFileService.get(id);
|
if(file == null){
|
return null;
|
}
|
|
var resource = userFileService.resolveResource(file);
|
if(resource == null){
|
return null;
|
}
|
|
// 设置图片尺寸:宽度8.8cm,高度6.8cm
|
// Word中1cm ≈ 37.795像素(96 DPI),所以8.8cm ≈ 333像素,6.8cm ≈ 257像素
|
var data = Pictures.ofStream(resource.getInputStream()).size(333, 257).create();
|
return super.cast(data);
|
}
|
}
|