生成的流程图汉字乱码怎么解决?

临远 2014-12-9 0:00:00 阅读:2017 回复:1

问题原因:引擎默认使用Arie字体生成图片中的问题,这个字体不支持中文,所以导致乱码

解决方法:设置ProcessEngineConfiguration中的属性,注意版本必须是5.13或以上版本,老版本不支持labelFontName

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

参考https://github.com/xuhuisheng/activiti-demo/blob/master/src/main/resources/spring/applicationContext-activiti.xml

衍生问题:设置了字体之后,图片依然乱码,有两种可能:

  • 没有重新部署流程,所以没有重新使用新配置生成图片。
  • 没有使用cmd的方式包装生成图片的方法,导致配置没有启用

通过封装cmd的方式调用生成图片的方法:

https://github.com/xuhuisheng/activiti-demo/blob/master/src/main/java/com/mossle/bpm/cmd/ProcessDefinitionDiagramCmd.java

如果不想用优雅的封装cmd的方法,只能手工初始化Context了。

Context.setProcessEngineConfiguration(processEngine.getProcessEngineConfiguration());

5.16以后的版本里,api发生了变化,需要手工传入activityFontName和labelFontName

  public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, List<String> highLightedFlows,
      String activityFontName, String labelFontName, ClassLoader customClassLoader, double scaleFactor); 

临远 2014-12-9 0:00:00