RTF文件格式研究

上传人:xmg****18 文档编号:121223352 上传时间:2020-02-19 格式:DOC 页数:25 大小:119.50KB
返回 下载 相关 举报
RTF文件格式研究_第1页
第1页 / 共25页
RTF文件格式研究_第2页
第2页 / 共25页
RTF文件格式研究_第3页
第3页 / 共25页
RTF文件格式研究_第4页
第4页 / 共25页
RTF文件格式研究_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《RTF文件格式研究》由会员分享,可在线阅读,更多相关《RTF文件格式研究(25页珍藏版)》请在金锄头文库上搜索。

1、 专业整理 学习帮手 这几天正在写一个编辑器 需要研究 RTF 文件格式 以下是我收集的一个资料 非常实用 在随后不长的时间内 我将发布一款 VB 代码格式化的源程序 RTF 文件格式研研究报报告 代开开版辞辞 摘要 本文对 RTF 文件格式进行分析研究 对 RTF 文件结构及特性进行了阐述 并分别列举了几个 实用性的例子进行详细分析 最终通过 VB 程序代码实现了一个 RTF 书写器 不具有所见即所得特性 本文对软件开发人员及 RTF 文件格式感兴趣的人员具有参考价值 关关键键字 RTF Rich Text Format Office 文件格式 一 引言 富文本格式 RTF 规范是为了便于在

2、应用程序之间轻松转储格式化文本和图形的一种编码方法 现在 用户可以利用特定转换软件 在不同系统如 MS DOS Windows OS 2 Macintosh 和 Power Macint osh 的应用程序之间转移字处理文档 RTF 规范提供一种在不同的输出设备 操作环境和操作系统之间交 换文本和图形的一种格式 RTF 使用 ANSI PC 8 Macintosh 或 IBM PC 字符集控制文档的表示法和格 式化 包括屏幕显示和打印 凭借 RTF 规范 不同的操作系统和不同的软件程序创建的文档能够在这些操 作系统和应用程序之间传递 将一个格式化的文件转换为 RTF 文件的软件称为 RTF 书

3、写器 RTF 书写器用于分离现有文本中的程 序控制信息 并且生成一个包含文本和与之相关的 RTF 组的新文件 将 RTF 文件转换成格式化文件的软 件则称为 RTF 阅读器 二 RTF 基本语语法 RTF 文件由未格式化本文 控制字 控制符和组组成 RTF 文件没有限制文件的行的最大长度 控制字是 RTF 用来标记打印控制符和管理文档信息的一种特殊格式的命令 一个控制字最长 32 个字 符 控制字的使用格式如下 字母序列 专业整理 学习帮手 注意 每个控制字均以一个反斜杠 开头 字母序列由 a z 的小写字母组成 控制字 或者称为关 键字 通常应该不包含任何大写字母 分隔符标记 RTF 控制字

4、的结束 可以是下列各项之一 一个空格 这时空格是控制字的一部份 一个数字或连字符 表示跟随的一个数值参数 该数字序列的长度由其后的一个空格或除了字母 和数字的其他字符划定 这个参数可以是正数或者负数 它的取值范围通常是从 32767 到 32767 任何非字母和数字的其他字符 这种情况下 此分隔字符结束控制字 而它并不属于控制字的一部 分 控制符由一个反斜线 跟随单个非字母字符组成 例如 代表一个不换行空格 控制符不需要分 隔符 组组由包括在 中的文本 控制字或控制符组成 左扩符 表示组的开始 右扩符 表示组的结束 每个组包括文本和文本的不同属性 RTF 文件也能同时包括字体 格式 屏幕颜色

5、图形 脚注 注释 注解 文件头和文件尾 摘要信息 域和书签的组合 以及文档 区段 段落和字符的格式属性 如果 包括字体 文件 格式 屏幕颜色 校订标记 以及摘要信息组 文档格式属性 则他们一定要在文件的 第一纯文本字符之前 这些组形成 RTF 的文件头 如果包括字体组 则它应该在格式组之前 如果组未使 用 可以省略 对于 RTF 文件的详细语法及关键字说明请参阅 Rich Text Format RTF Specification v1 7 这里 不作更详细的说明 三 Hello Word 国际惯例 一个 Hello Word 演示例子 内容如下 rtf1 ansi ansicpg936 de

6、ff0 deflang1033 deflangfe2052 fonttbl f0 fmodern fprq6 fcharset134 cb ce cc e5 generator Msftedit 5 41 21 2500 viewkind4 uc1 pard lang2052 f0 fs20 Hello World par 该文件分析如下 红色 1 文件基本属性 专业整理 学习帮手 rtf1 RTF 版本 ansi 字符集 ansicpg936 简体中文 deff0 默认字体 0 deflang1033 美国英语 deflang fe2052 中国汉语 2 字体表 fonttbl f0 字体

7、0 fmodern fprq6 字体间距为 6 fcharset134GB2312 国标码 cb ce cc e5 宋 体 3 生成器信息 generator Msftedit 5 41 21 2500 4 文档属性 viewkind4 正常视图 uc1 单字节 pard 默认段落属性 lang2052 中国汉语 f0 字体 0 fs20 字体大小 2 0 磅 5 正文文本 Hello World par 段落标记 文件结束 注意 在 RTF 文件中 中文等双字节字符采用其单字节 ASCII 码序列表示 例如文本 宋体 ABC 应该表示 为 cb ce cc e5ABC 这就是为什么 RTF

8、可读性差的原因 如果需要通过程序获取某个字符串的合 法 ASCII 序列 可以采用如下的 VB 函数 Public Function StrToASC ByVal strIn As String As String 将中文字符串转换为 ASC 串 包括英文一起 先将特殊字符进行转义 strIn Replace strIn Chr 9 TAB strIn Replace strIn Chr 13 Chr 10 par Dim i As Long s As String lsChar As String lsPart1 As String lsPart2 As String Dim lsCharH

9、ex As String For i 1 To Len strIn 专业整理 学习帮手 lsChar Mid strIn i 1 If lsChar Then lsCharHex LCase Hex Asc lsChar If Len lsCharHex 4 Then lsCharHex Mid lsCharHex 1 2 Mid lsCharHex 3 2 Else lsCharHex lsChar End If s s lsCharHex Else lsCharHex LCase Hex Asc lsChar If Len lsCharHex 4 Then lsCharHex Mid ls

10、CharHex 1 2 Mid lsCharHex 3 2 Else lsCharHex lsChar End If s s lsCharHex End If Next StrToASC s End Function 四 文字的更高级级表示 掌握了基本文字表述方法后 你一定会试着进一步探索文本更高级的表示方法 如下划线 颜色 粗 体 斜体等等 而这些在 V1 7 规范中都作了详细描述 本文只列出部分常用关键字 以供参考 l 对于字体表和颜色表的说明 对于我们在文档中使用的每一个字体和颜色 我们都必须在文档头的字体表和颜色表中预先定义 字体表定义的例子如下 fonttbl 专业整理 学习帮手 f

11、0 froman fcharset0 fprq2 panose 02020603050405020304 Times New Roman f1 fswiss fcharset0 fprq2 panose 020b0604020202020204 Arial f10 fnil fcharset2 fprq2 panose 05000000000000000000 Wingdings 我们在使用字体时 就可以直接指定字体表的一个索引 如 f1Happy 表示字体为 Arial 的文本 Happy 如果我们想加入其他字体 如 华文中宋 那么只需要在字体表中加入该字体说明 并在 需要时引用该字体索引值

12、即可 方法为 华文中宋的 ASCII 串为 bb aa ce c4 d6 d0 cb ce f222 fnil fcharset134 fprq2 bb aa ce c4 d6 d0 cb ce 然后通过 f222 来引用该字体即可 颜色表定义的例子如下 colortbl red0 green0 blue0 red0 green0 blue255 red0 green255 blue255 red0 g reen255 blue0 red255 green0 blue255 red255 green0 blue0 red255 green255 blue0 red255 green255 bl

13、ue255 red0 green0 blue128 red0 green128 blue128 red0 green 128 blue0 red128 green0 blue128 red128 green0 blue0 red128 green128 blue0 re d128 green128 blue128 red192 green192 blue192 颜色表中每个颜色值采用 RGB 格式书写 每个颜色用分号格开 注意第一个颜色值 c0 为空 表 示系统默认颜色 一般为黑色 依次为 0 1 2 我们在使用颜色时 如字体颜色 就可以指定某一个颜色索引值 如 cf2Sunday 表示字体颜

14、色为 RGB 0 0 255 蓝色的文字 Sund y cb6ABC 表示字体背景色为 RGB 255 0 0 的文字 ABC 如果我们需要加入其他颜色值 只需 要在颜色表中加入颜色定义 并通过相应的索引值来引用它即可 l 字符底纹语法如下 控制字 涵义义 chbrdr 字符边框 每边均有边框 chshdngN 字符阴影 参数 N 的值文字阴影的百分比 专业整理 学习帮手 控制字 涵义义 chcfpatN N 是背景图案的颜色 指定文档颜色表的一个索引 chcbpatN N 是填充色 指定文档颜色表的一个索引 chbghoriz 指定水平线文本背景图案 chbgvert 指定垂直线文本背景图案

15、 chbgfdiag 指定正向对角线文本背景图案 chbgbdiag 指定反向对角线文本背景图案 chbgcross 指定十字线文本背景图案 chbgdcross 指定对角十字线文本背景图案 chbgdkhoriz 指定粗水平线文本背景图案 chbgdkvert 指定粗垂直线文本背景图案 chbgdkfdiag 指定粗前斜线文本背景图案 chbgdkbdiag 指定粗后斜线文本背景图案 chbgdkcross 指定粗十字线文本背景图案 chbgdkdcross 指定粗对角十字线文本背景图案 假设我们希望得到背景为水平线 字体为华文中宋 字体索引为 222 颜色为红色 颜色索引为 6 的文本 星

16、期天 则只需输入 f222 cf6 bb aa ce c4 d6 d0 cb ce 即可 专业整理 学习帮手 l 字符下划线语法如下 控制字 涵义义 ul 连续的下划线 ul0 关闭所有下划线 ulcN 下划线颜色 注意 大写 N 表示一个索引数字 下同 uld 点下划线 uldash 短划下划线 uldashd 点划下划线 uldashdd 双点划下划线 uldb 双下划线 ulhwave 加重波浪下划线 ulldash 长划下划线 ulnone 停止所有下划线 ulth 粗下划线 ulthd 粗点下划线 ulthdash 粗短划下划线 ulthdashd 粗点划下划线 ulthdashdd 粗双点划下划线 专业整理 学习帮手 控制字 涵义义 ulthldash 粗长划下划线 ululdbwave 双波浪下划线 ulw 字下加下划线 ulwave 波浪下划线 下划线语法与前面底纹的使用相同 l 其他文本显示高级属性 控制字 涵义义 outl 边框 outl 0 关闭之 scaps 小体大写字母 scaps 0 关闭之 shad 阴影 shad 0 关闭之 strike 删除线 str

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号