|
前两天在Linux上用openjade转DocBook到RTF文档时中文
老是乱码,没办法,只好慢慢分析了一把,原来
是生成的rtf中font描述中使用的字体不是中文字体造成的!!
这是openjade生成的rtf的文件开始处的描述信息:
DocBook -> rtf显示中文那篇文章里内容是:
{\rtf1\ansi\deff0
{\fonttbl{\f1\fnil\fcharset0 Arial;}
{\f0\fnil\fcharset0 Times New Roman;}
}
我们只要把它改为:
{\rtf1\ansi\ansicpg936\uc1\deff0\deflang1033\langfenp2052
{\onttbl{\f0 宋体;}{\f1 宋体;}{\f2 宋体;}}
就ok了.
"宋体"可以改为系统中支持的中文字体,比如我的可以是Simsun或Tahoma等,
但使用"宋体"可保证在Windows下Word也能正常显示.
最后写了一个脚本来简化此过程:
[root@MagicLinux dotty]# cat ~/bin/mydocbook2rtf
#!/bin/sh
TMP=/tmp/docbook2rtf.tmp
RTF_FILE_NAME=${1%.*}.rtf
openjade -t rtf -d ~/Soft/share/style/dsssl/1.78/print/docbook.dsl $*
EX=$?
cat > $TMP <<EOF
{\rtf1\ansi\ansicpg936\uc1\deff0\deflang1033\langfenp2052
{\fonttbl{\f0 宋体;}{\f1 宋体;}{\f2 宋体;}}
EOF
sed -e '1,/^}$/d' $RTF_FILE_NAME >> $TMP
cp -f $TMP $RTF_FILE_NAME
rm -f $TMP
exit $?
#EOF
测试环境:
MagicLinux1.2 Prev6
openjade version "1.3.2"
OpenSP version "1.5.1"
OpenOffice 1.1.2简体中文版
永中Office 2003
Windows XP + MS Office 2003 |
|