第一种解决方案就是将linux的添加中文的font
public InputStream tracePhoto(String processDefinitionId, String executionId) {
List<String> activeActivityIds = Lists.newArrayList(), highLightedFlows = new ArrayList<String>();
if (runtimeService.createExecutionQuery().executionId(executionId).count() > 0) {
activeActivityIds = runtimeService.getActiveActivityIds(executionId);
}
/**
* 获得当前活动的节点
*/
if (this.isFinished(executionId)) {// 如果流程已经结束,则得到结束节点
activeActivityIds.add(historyService.createHistoricActivityInstanceQuery().executionId(executionId)
.activityType("endEvent").singleResult().getActivityId());
} else {// 如果流程没有结束,则取当前活动节点
// 根据流程实例ID获得当前处于活动状态的ActivityId合集
activeActivityIds = runtimeService.getActiveActivityIds(executionId);
}
// 获得历史活动记录实体(通过启动时间正序排序,不然有的线可以绘制不出来)
List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery()
.executionId(executionId).orderByHistoricActivityInstanceStartTime().asc().list();
// 计算活动线
highLightedFlows = this
.getHighLightedFlows((ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(processDefinitionId), historicActivityInstances);
/**
* 绘制图形
*/
InputStream imageStream = null;
if (null != activeActivityIds) {
try {
// 获得流程引擎配置
ProcessEngineConfiguration processEngineConfiguration = processEngine.getProcessEngineConfiguration();
// 根据流程定义ID获得BpmnModel
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
// 输出资源内容到相应对象
imageStream = new DefaultProcessDiagramGenerator().generateDiagram(bpmnModel, "png", activeActivityIds,
highLightedFlows, processEngineConfiguration.getActivityFontName(),
processEngineConfiguration.getLabelFontName(), processEngineConfiguration.getClassLoader(),
1.0);
return imageStream;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
第二种是在tomcat中直接适应一下linux的系统建议使用第二种。
在jdk15以后,只需在~/jre/lib/fonts/下建一个fallback目录,把你想在java中使用的字体烤贝到这个目录中即可
以下方法在fc6下测试通过,假设用户的jre路径为 /usr/java/jdk1.7.63/jre/
cd /usr/java/jdk1.6.0_03/jre/lib/fonts
sudo mkdir fallback
将C:\WINDOWS\Fonts\simsun.ttc拷贝到 /usr/java/jdk1.6.0_03/jre/lib/fonts/fallback文件夹内
好的你重启服务器试试。估计是OK的了