watercloud 发表于 2004-8-5 21:42:33

openjade转DocBook -> RTF时中文乱码解决

前两天在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也能正常显示.

最后写了一个脚本来简化此过程:
# 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
页: [1]
查看完整版本: openjade转DocBook -> RTF时中文乱码解决