activiti生成图片乱码解决

本文介绍了解决Activiti流程图生成时出现乱码的方法。通过两种途径:一是修改源码,二是配置XML文件指定字体。特别指出,还需确保activiti配置对象正确设置到Context中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用ProcessDiagramGenerator.generateDiagram方法可以生成当前活动用红色边框渲染的图片,但是执行后会有乱码的问题,这个主要是由于生成图片时的font造成的。

网上的解决方案有两种

 一种是修改源码

另一种是在xml配置中添加字体配置

Xml代码   收藏代码
  1. <property name="activityFontName" value="${diagram.activityFontName}"/>  
  2. <property name="labelFontName" value="${diagram.labelFontName}"/>  

 

将这两个属性配置为宋体,但是在程序执行的时候还是会有问题

这是因为还需要将activiti的配置对象设置到Context对象中,activiti默认不会将其注入,具体看代码

ProcessDiagramCanvas这个类

Java代码   收藏代码
  1. public ProcessDiagramCanvas(int width, int height) {  
  2.     this.canvasWidth = width;  
  3.     this.canvasHeight = height;  
  4.     //会从上下文获取,默认这个返回是空的 所以需要在自己的程序里手动设置进去  
  5. //否则会取其默认值Arial  
  6.     if (Context.getProcessEngineConfiguration() != null) {  
  7.       this.activityFontName = Context.getProcessEngineConfiguration().getActivityFontName();  
  8.     }  
  9.   
  10.     if (Context.getProcessEngineConfiguration() != null) {  
  11.       this.labelFontName = Context.getProcessEngineConfiguration().getLabelFontName();  
  12.     }  
  13.       
  14.     this.processDiagram = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);  
  15.     this.g = processDiagram.createGraphics();  
  16.     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);  
  17.     g.setPaint(Color.black);  
  18.       
  19.     Font font = new Font(activityFontName, Font.BOLD, FONT_SIZE);  
  20.     g.setFont(font);  
  21.     this.fontMetrics = g.getFontMetrics();  
  22.   
  23.     LABEL_FONT = new Font(labelFontName, Font.ITALIC, 10);  
  24.   }  

 

所以在自己代码中要执行  Context.setProcessEngineConfiguration(processEngineConfiguration);这样才能彻底解决乱码的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值