Activiti6 流程模型圖中文顯示為方塊□□
阿新 • • 發佈:2019-01-25
解決中文顯示問題
新增自定義類,繼承原有DefaultProcessDiagramGenerator類,關鍵程式碼:
import org.activiti.bpmn.model.BpmnModel; import org.activiti.image.impl.DefaultProcessDiagramGenerator; import java.awt.image.BufferedImage; import java.util.List; public class CustomProcessDiagramGenerator extends DefaultProcessDiagramGenerator { protected String activityFontName = "宋體"; protected String labelFontName = "宋體"; protected String annotationFontName = "宋體"; public CustomProcessDiagramGenerator(final double scaleFactor){ super(scaleFactor); } public CustomProcessDiagramGenerator(){ super(); } @Override public BufferedImage generateImage(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, List<String> highLightedFlows, double scaleFactor) { return generateImage(bpmnModel, imageType, highLightedActivities, highLightedFlows, this.activityFontName, this.labelFontName, this.annotationFontName, null, scaleFactor); } }
圖片生成器
import org.activiti.bpmn.model.BpmnModel; import org.activiti.image.ProcessDiagramGenerator; import org.activiti.image.exception.ActivitiImageException; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ImageGenerator { public static BufferedImage createImage(BpmnModel bpmnModel) { ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator(); BufferedImage diagramImage = diagramGenerator.generatePngImage(bpmnModel, 1.0); return diagramImage; } public static BufferedImage createImage(BpmnModel bpmnModel, double scaleFactor) { ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator(scaleFactor); BufferedImage diagramImage = diagramGenerator.generatePngImage(bpmnModel, scaleFactor); return diagramImage; } public static byte[] createByteArrayForImage(BufferedImage image, String imageType) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { ImageIO.write(image, imageType, out); } catch (IOException e) { throw new ActivitiImageException("Error while generating byte array for process image", e); } finally { try { if (out != null) { out.close(); } } catch(IOException ignore) { // Exception is silently ignored } } return out.toByteArray(); } }