默认情况下Activiti使用DefaultProcessDiagramGenerator
来生成流程图(Activiti 6是这样的,Activiti 7需要额外引入activiti-image-generator
),使用其generateDiagram
方法。如果流程定义中存在中文字符,那么生成的流程图极大可能会出现乱码。
指定字体
generateDiagram
方法可以使用activityFontName
、labelFontName
、annotationFontName
三个参数来指定字体,比如可以指定为宋体
,这样生成的流程图就不会产生豆腐块了。
打包字体
宋体
以及其他一些常用字体是Windows上面的默认字体,通常应用部署环境是Linux,为了能正常显示中文,我们最好是把字体文件打包进我们的应用,然后再使用Java加载字体。
从Windows复制或者从网上下载字体文件,通常是*.ttf
,放到我们的应用目录中,然后使用Spring的ResourceLoader
来找到我们的字体文件,最后使用Java加载字体,我们就可以指定生成流程图字体为我们加载的字体了。
Font font = Font.createFont(Font.TRUETYPE_FONT, inputStream);
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);
可以使用font.getFontName()
查看我们注册的字体是什么名字。