- 26
- 0
- 约1.23万字
- 约 13页
- 2022-06-25 发布于上海
- 举报
C#操作 RTF 文档
袁永福 2007-10-20
笔者正在用 C#开发一个名为 XWriter 的文本编辑器(点击下载),其中需要提供对 RTF 文档的支持,以前从没有搞过 RTF 文档,因此临时突击研究了一下,经过几天的学习研究和实践,对 C#操作 RTF 文档有所了解, 因此才可以写出此文给予说明,希望能对其他人学习 RTF 文档格式有所帮助。
RTF 文档格式是微软提出的一种用于描述带格式文本的文档格式,上个世纪就提出来了,一直用到现在,而且很多程序都支持这种格式,微软的Office 软件家族,Windows 写字板软件等等都支持,而且Windows 操作系统的剪切板和 OLE 拖拽操作也支持 RTF 文档,这样就允许不同的软件通过 RTF 格式相互交流带格式文本。比如我用的 VS.NET2003 中的 C#代码编辑器,在其中复制了一段代码文本,在 MS Word 中粘贴所得就是具有高亮度显示的文本。因此 RTF 格式的作用还是不小的,而且 RTF 格式是纯文本格式,不是二进制格式,读写都不算难。
RTF 文档格式和 HTML,XML 之类的标记语言有点类似,原理不复杂,但内容还是比较多的,在微软的 MSND 中 就 有 文 章 详 细 的 介 绍 了 RTF 格 式 , 地 址是 ms-help://MS.MSDNQTR.2003FEB.2052/dnrtfspec/html/rtfspec.htm ,你用记事本打开一个 RTF 文档,可以发现其中也是纯文本数据,而且一般全是 ANSI 字符,RTF 文档一般采用 ASNI 字符编码格式进行存储,其中是不能直接保存汉字等编码大于 127 的字符,要保存得使用转义字符。RTF 文档中使用一对花括号{ }来定义一个组,组可以套嵌定义;用\来开始定义一个指令和转义字符;此外还能包含纯文本数据。所有的指令 和转义字符都必须包含在一个组中,一个RTF 文档只有一个根组,这点有点类似XML 文档只能有一个根节点的规定。
我们使用 Windows 写字板新建一个 RTF 文档,只输入Hellow文本,设置文本颜色为蓝色,然后保存, 然后使用记事本打开刚刚保存的 RTF 文件,此时就能看到一个最简单的 RTF 文档的内容了,其内容如下。
{
\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052
{\fonttbl
{\f0\fmodern\fprq6\fcharset134 \cb\ce\cc\e5;}
}
{\colortbl ;\red0\green0\blue255;}
{\*\generator Msftedit 507;}
\viewkind4\uc1\pard\cf1\lang2052\f0\fs20 Hellow\cf0\par
}
此处为了便于阅读,对代码进行了缩进处理,实际上 RTF 文档中空白字符是会影响到显示结果的,一般实
际生成 RTF 文档时不要添加额外的空白字符。
这段 RTF 代码第一行和最后一行是表示根组的花括号,然后是\开头的指令,指令名称全部由英文字母组成,若指令后面跟着若干个数字,则这些数字就是指令的参数。比如\rtf1,这个指令名称是rtf,参数值是1; 而\ansi指令名称是ansi,没有参数。
指令\rtf是每个 RTF 文档必备的,而且总是第一个指令,因此可以看作 RTF 文档的文件头标记。若一个
RTF 文档第一个指令不是rtf指令,则可以认为这个 RTF 文档是不合法的。
指令\ansicpg就是说明该 RTF 文档的内容的编码格式,参数就是编码格式编号,例如\ansicpg936就是 指 明 编 码 格 式 为 936 号 字 符 集 , 对 于 C# 程 序 来 说 , 就 是 库 函数 System.Text.Encoding.GetEncoding( 936 ) 的返回结果,也就是 GB2312 编码格式。RTF 文档本身肯定是使用标准的 ANSI 格式保存的,此处指明的字符编码格式是用于处理 RTF 文档中的转义字符的,比如代码中由连续的转义字符 \cb\ce\cc\e5 ,程序解析 RTF 文档时,应当将这一串转义字符生成一个字节数组,内容
为 0xcb,0xce,0xcc,0xe5,然后使用第 936 号编码格式对象的 GetString( byte[] )函数来还原所存储的字符串,也就是宋体两个字。这点比 HTML 的转义字符处理要麻烦一些,HTML 转义字符是一个指令定义一个字符,而 RTF 中的是一个指令定义一个字节,而汉字是双字节的字符编码,转化前还得设法获
您可能关注的文档
- Bjtty嘉兴教育市教育学会中小学外语教学分会.docx
- BlackBerry DM黑莓手机桌面管理器使用教程方法.docx
- Bltoc假期实践报告.docx
- BLUE口琴教程分析和总结.docx
- Bmdi监理工程师资格申请表doc - 通信建设监理工程师资格申请表文库.docx
- Bnly监理前期资料封皮.docx
- Bntig监理实习报告.docx
- Bobath技术分析和总结.docx
- BOIS类数据恢复分析和总结.docx
- BookStore开发计划书(2011-10)分析和总结.docx
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
最近下载
- 广州数控GSK980TA1-TA2-TB1-TB2车床数控系统 使用手册.pdf
- 虚实乱针绣入门.ppt VIP
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验.pdf
- 曲柄连杆机构的运动与受力分析讲解学习.pptx VIP
- 如此伟大的爱G波利切un amore cosi grande G-E-G-F-5P.pdf VIP
- 钛白废酸废水综合治理项目可行性研究报告.docx
- 陕09J02-屋面-标准图集.docx
- 中药当归中阿魏酸的提取工艺研究.pptx
- 蔬菜大棚建设实施方案范文(8篇).docx VIP
- 结合多源异构数据融合技术的人口增长时空预测模型构建及应用分析.pdf VIP
原创力文档

文档评论(0)