使用html2image-0.9.jar生成图片。
在本地window系统正常,放到服务器linux系统时候中文乱码问题。英文可以,中文乱码应该就是字体问题了。
一、首先需要在linux安装字体,simsun.ttc simsun.ttf simsunb.ttf
1、新建目录
/user/share/fonts/chinese
2、上传字体,在/user/share/fonts/chinese目录
simsun.ttc simsun.ttf
3、执行,进入/user/share/fonts/chinese目录
chmod 777 simsun.ttc
chmod 777 simsun.ttf
fc-cache -fv
4、查看安装的字体
fc-list
注意:
如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale
如果提示 fc-cache: command not found,则需要安装# yum install fontconfig
安装完字体以后,下面就是最重要的步骤了
二、CP字体到JDK的jre/lib/fonts/fallback 目录下
首先来说说产生这个问题的原因。java程序启动的时候会去在$JAVA_HOME/jre/lib/fonts目录下寻找相应的字体来显示。由于 JDK默认没有中文字体,所以我们需要手工的来设置一下,让java应用程序能够找到相应的中文字体。这样就能够解决问题了。
JDK中文处理办法基本步骤如下:
1)cd $JAVA_HOME/jre/lib/fonts
2)mkdir fallback
3)cp xxx.ttf fallback #xxx.ttf代表你想要的中文字体文件
4)cd fallback
5)mkfontscale
6)mkfontdir
这里最主要的就是fallback这个目录,这个目录必须建,原因如下:
JFreeChart默认字体有"Arial","Dialog", "Dialog", "SansSerif", "Tahoma" 而需要用到是宋体等中文字体时,JVM找不到相关字体文件,所以会显示乱码,解决方法如下:
方法一:
复制所使用的中文字体文件(如simsun.ttc)到此目录中(如果没有fallback目录,请手动建立。)
$JAVA_HOME/jre/lib/fonts/fallback
为何要建立fallback目录参照sequence.fallback的说明:
If the runtime environment has a directory lib/fonts/fallbackand this directory contains valid TrueType or Type 1 fonts, theruntime automatically adds these fonts as fallback fonts for 2Drendering. On Windows, if there is a system EUDC (End User DefinedCharacters) font registered with Windows, the runtime automaticallyadds this font as well as a fallback font for 2Drendering
方法二:
将Linux系统的字体目录作为JDK下面的一个字体目录连接。 ln -s $FONTS_PATH/FONT_DIR$JAVA_HOME/jre/lib/fonts/fallback