Activiti工作流在linux系统流程图文字显示乱码

项目使用了Activiti工作流,在windows系统使用显示流程图正常,但是在正式的linux系统上发现流程图节点文字信息乱码显示!图片其实是用了api提供的图片流直接封装显示的。
核心部分代码如下:

public static InputStream getDiagram(String processInstanceId){
    
    
		RuntimeService runtimeService = getRuntimeService();
		RepositoryService repositoryService = getRepositoryService();
		//查询流程实例
		HistoryService historyService = getHistoryService();
		HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
				.processInstanceId(processInstanceId).singleResult();
//		ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
//				.processInstanceId(processInstanceId).singleResult();
		//查询流程定义
		ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
				.processDefinitionId(historicProcessInstance.getProcessDefinitionId()).singleResult();
		//获取BPMN模型对象
		BpmnModel model = repositoryService.getBpmnModel(processDefinition.getId());
		//定义使用宋体
		String fontName = "宋体";
		//获取流程实例当前的节点,需要高亮显示
		List<String> currentActs = new ArrayList<String>();
		if(!isFinished(processInstanceId)){
    
    
			currentActs = runtimeService.getActiveActivityIds(processInstanceId);
		}
		//BPMN模型对象、图片类型、显示的节点
		InputStream inputStream = processEngine
				.getProcessEngineConfiguration()
			 	.getProcessDiagramGenerator()
				.generateDiagram(model, "png", currentActs, new ArrayList<String>(), 
						fontName, fontName, fontName, null, 1.0);
		return inputStream;
	}

原因最终判断是图片文字使用了宋体,但是linux系统中默认不包含宋体,所以系统在解析宋体的时候就乱码啦!!解决办法是将windows系统中的宋体安装到windows环境中国,具体是方法配置在jdk字体文件夹下,亲自验证可行!

在console里面输入echo $JAVA_HOME,获取到oracle jdk安装目录,然后在jre/lib/fonts目录下创建fallback目录,将C:\WINDOWS\Fonts\simsun.ttc拷贝到 /usr/java//jdk1.7.63/jre/lib/fonts/fallback文件夹内后重启服务器即可。

猜你喜欢

转载自blog.csdn.net/wujian_csdn_csdn/article/details/105834051
今日推荐