Posted on 2011-08-17 15:00
貝貝爸爸 閱讀(9013)
評論(0) 編輯 收藏 所屬分類:
BPM
這幾天調(diào)試Activiti引擎的過程中,Activiti引擎會自動生成圖片,可如果遇到中文的節(jié)點時,圖片的中文字符將變成亂碼,搜索了下相關的文章,最終為字體原因造成具體看測試代碼:
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環(huán)境的話,需要將相關的字體文件傳到服務器的jdk下即可。
我的本地字體文件地址是“C:\WINDOWS\Fonts\simsun.ttc”,
上傳到服務器地址是:“/usr/jdk/instances/jdk1.5.0/jre/lib/fonts/simsun.ttc”
剛才試了一下,可以不用指定字體,就能解決亂碼的問題,當然,我覺得應該自動和操作系統(tǒng)的字體相關吧。如果操作系統(tǒng)jdk不支持中文,也應該亂碼。