QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1166|回复: 0

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

[复制链接]
发表于 2004-8-5 21:42:33 | 显示全部楼层 |阅读模式
前两天在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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 08:39 , Processed in 0.073794 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表