Linux下birt导出文件乱码问题及解决方案
喝咖啡的IT羊 2008-07-25
Linux下birt导出word时,如果系统里没有相应的字体文件,导出的word就会中文乱码。
而
birt导出pdf时,如果系统里找不到相应的字体文件,birt就会给其定义一种字体,然后生成pdf文件。
上边是我的两条猜测。
试验情况如下:
系统环境为windows
1.
将birt报表中的所有内容字体设为 Serif 字体,系统导出 pdf 文件,打开时,adobe(最简化的简体中文版)需要下载繁体中文字库,如有中文标点,还需要下载日文字体,生成word文件也不乱码
2.
将birt报表中的所有内容字体设为 宋体 字体,打开时,adobe不需要下载任何字库即可打开pdf文件,生成word文件也不乱码
3.
将报表中所有内容字体设为 宋体 字体,找到birt runtime的fontsconfig.xml文件,注释掉
<path path="C:/windows/fonts" />
<path path="d:/windows/fonts" />
<path path="e:/windows/fonts" />
<path path="f:/windows/fonts" />
<path path="g:/windows/fonts" />
<path path="C:/WINNT/fonts" />
<path path="d:/WINNT/fonts" />
<path path="e:/WINNT/fonts" />
<path path="f:/WINNT/fonts" />
<path path="g:/WINNT/fonts" />
让系统找不到字体文件.此时,虽然仍然设为宋体,但用adobe打开导出的pdf文件,会提示下载繁体中文字库,如有中文标点,还需要下载日文字库.
导出word文件,乱码.
根据试验 2 和试验 3的结果,我感觉是字体问题.
解决方案:
1。
如果运行tomcat的linux帐号权限可以访问系统的fonts目录,则在linux下安装部分中文字体。
2。
在linux下建立一个目录,将此目录权限设为任意用户可读,将windows下的字体文件copy到该目录下,然后修改前边所说的fontsconfig.xml目录,增加一行 <path path="xxxxxxx" />,指向字体目录,即可解决问题。