Activiti6 流程模型图中文显示为方块□□

解决中文显示问题

新增自定义类,继承原有DefaultProcessDiagramGenerator类,关键代码:



import org.activiti.bpmn.model.BpmnModel;
import org.activiti.image.impl.DefaultProcessDiagramGenerator;
 
import java.awt.image.BufferedImage;
import java.util.List;
 
public class CustomProcessDiagramGenerator extends DefaultProcessDiagramGenerator {
    protected String activityFontName = "宋体";
    protected String labelFontName = "宋体";
    protected String annotationFontName = "宋体";
 
    public CustomProcessDiagramGenerator(final double scaleFactor){
        super(scaleFactor);
    }
 
    public CustomProcessDiagramGenerator(){
        super();
    }
 
    @Override
    public BufferedImage generateImage(BpmnModel bpmnModel, String imageType,
                                       List<String> highLightedActivities, List<String> highLightedFlows, double scaleFactor) {
 
        return generateImage(bpmnModel, imageType, highLightedActivities, highLightedFlows, this.activityFontName, this.labelFontName, this.annotationFontName, null, scaleFactor);
    }
 
}

图片生成器

import org.activiti.bpmn.model.BpmnModel;
import org.activiti.image.ProcessDiagramGenerator;
import org.activiti.image.exception.ActivitiImageException;
 
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
 
public class ImageGenerator {
    public static BufferedImage createImage(BpmnModel bpmnModel) {
        ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator();
        BufferedImage diagramImage = diagramGenerator.generatePngImage(bpmnModel, 1.0);
        return diagramImage;
    }
 
    public static BufferedImage createImage(BpmnModel bpmnModel, double scaleFactor) {
        ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator(scaleFactor);
        BufferedImage diagramImage = diagramGenerator.generatePngImage(bpmnModel, scaleFactor);
        return diagramImage;
    }
 
    public static byte[] createByteArrayForImage(BufferedImage image, String imageType) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        try {
            ImageIO.write(image, imageType, out);
        } catch (IOException e) {
            throw new ActivitiImageException("Error while generating byte array for process image", e);
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
            } catch(IOException ignore) {
                // Exception is silently ignored
            }
        }
        return out.toByteArray();
    }
}

作者:JuneHwa 来源:CSDN 原文:https://blog.csdn.net/u010784959/article/details/79466473 版权声明:本文为博主原创文章,转载请附上博文链接!

0评论