Posted on 2011-08-17 15:00
贝贝爸爸 阅读(8997)
评论(0) 编辑 收藏 所属分类:
BPM
这几天调试Activiti引擎的过程中,Activiti引擎会自动生成图片,可如果遇到中文的节点时,图片的中文字符将变成乱码,搜索了下相关的文章,最终为字体原因造成具体看测试代码:
1 package org.activiti.examples.processdefinitions;
2
3 import java.awt.Font;
4 import java.awt.FontMetrics;
5 import java.awt.Graphics2D;
6 import java.awt.image.BufferedImage;
7 import java.io.File;
8 import java.io.IOException;
9
10 import javax.imageio.ImageIO;
11
12 public class Test {
13
14 /**
15 * @param args
16 */
17 public static void main(String[] args) {
18 int width = 100;
19 int height = 100;
20 String text = "爱我中华";
21 int x = 0;
22 int y = 0;
23 BufferedImage processDiagram = new BufferedImage(100, 100,
24 BufferedImage.TYPE_INT_ARGB);
25 Graphics2D g = (Graphics2D) processDiagram.createGraphics();
26 Font font = new Font("宋体", Font.BOLD, 12);
27 g.setFont(font);
28 FontMetrics fontMetrics = g.getFontMetrics();
29 int textX = x + ((width - fontMetrics.stringWidth(text)) / 2);
30 int textY = y + ((height - fontMetrics.getHeight()) / 2)
31 + fontMetrics.getHeight();
32 g.drawString(text, textX, textY);
33 File outFile = new File("d:/newfile.png");
34 try {
35 ImageIO.write(processDiagram, "png", outFile);
36 } catch (IOException e) {
37 // TODO Auto-generated catch block
38 e.printStackTrace();
39 }// 写图片
40 }
41
42 }
43
搞定,呵呵。
如果要部署到linux环境的话,需要将相关的字体文件传到服务器的jdk下即可。
我的本地字体文件地址是“C:\WINDOWS\Fonts\simsun.ttc”,
上传到服务器地址是:“/usr/jdk/instances/jdk1.5.0/jre/lib/fonts/simsun.ttc”
刚才试了一下,可以不用指定字体,就能解决乱码的问题,当然,我觉得应该自动和操作系统的字体相关吧。如果操作系统jdk不支持中文,也应该乱码。