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);
...
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,通过扩展的方式来解决,目前我没有发现。