activiti 5.17 流程图中文乱码问题

1. 流程图中任务中的中文乱码显示问题。

 
解决方法:设置processEngineConfiguration中的两个字体属性,例如:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
     。。。
     <!-- 生成流程图的字体 -->

     <property name="activityFontName" value="宋体"/>
     <property name="labelFontName" value="宋体"/>

</bean>
 
2. 流程图中TextAnnotation中的中文乱码显示问题。
 
此乱码产生的原因是,负责画流程图的类DefaultProcessDiagramCanvas 定义注解的字体了属性(为Arial):
protected static Font ANNOTATION_FONT = new Font("Arial", Font.PLAIN, FONT_SIZE);
然后再画流程图时,不知什么原因,在外部配置了的字体并没有使用,在代码中硬编码设置textAnnotation 字体为ANNOTATION_FONT ,导致出现中文乱码,外部配置也没用。见下面代码:
       public void drawTextAnnotation(String text, GraphicInfo graphicInfo) {
         int x = (int) graphicInfo.getX();
         int y = (int) graphicInfo.getY();
         int width = (int) graphicInfo.getWidth();
         int height = (int) graphicInfo.getHeight();
    
       Font originalFont = g.getFont();
       Stroke originalStroke = g.getStroke();
       
       g.setFont(ANNOTATION_FONT);

       ...
解决方法:重新编译此模块,将默认字体改成宋体,或者注释掉设置字体代码。是否可以自定义DefaultProcessDiagramCanvas,通过扩展的方式来解决,目前我没有发现。
原文地址:https://www.cnblogs.com/yanzhenxing/p/4830569.html