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,通過擴展的方式來解決,目前我沒有發現。
