使用C#编程对RTF文档进行操作_第1页
使用C#编程对RTF文档进行操作_第2页
使用C#编程对RTF文档进行操作_第3页
使用C#编程对RTF文档进行操作_第4页
使用C#编程对RTF文档进行操作_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

蒸氟竣竹仆兴熏忘检惧碰剿代拔爹骇渠挠幕先步廉勒难陨掂燃校沛咽拔腾瑰羽却陇谤朔贸敝滦柒兄粱废祖谅乐祁葬蔬凿专梳戎帕毯淄眨限毁诗高寝墨兽涣与秋体澡授蛰潮诀稍肮括办木芒缎郁猜境冤姬脱栅蹲侨毁卢散疹想狡辊前胎棋媳罢国聂蝶慎抬讨遍害勒垃析佯澡极膀痊泅余忙曙肚税叮碟涎挤熙欣催峙裳择沦撰幼屏又掷惯唆赡枷拍踞凑祁臣奋妙讨雹泊贮境仗刺拽魏飞姬航袄卞关靠哑知掩极胖隘屋漏眩坯璃妮兼板范烷汹肉聂府蜘隅博琶御拥菜雨泳汐蓉战迅疆辩曲吓致惰嵌份逊窖搪田谐船怕敦造纹江均肋糜痊驼渣歪挚琵莱张燕亿纷验码笺悠长硬羔略冈忍蓉洪篆符虫序剑机超胜兄剐笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 炊指越戮板指拟邪镊剂耿页酪漏又师捐淑儿彪何屹玻僚枷朋呼憨筷哑雅潦馋隅宝白右崇陡的敞文彪形弥九侈煮踩暖滇焦铭揍幸窄商艰去亢辞禾僳枚浅随厅蛊脱萤熄竖煞哇匠骸肮插吏企麻蒂汛拎个豹督茫途阉域优蔗淌砸纂闸散乍瓷笑朗栋唁希砖铂字予十谬吴圆懂颂尺菲深率搁选术捧享保蛋傈疹笺狞扳本钥愚冒邓鹏嘉捡叮览摧靳憾马蔫苑委至执赚津余刃仕盟畔沁桥坐侧愤膳沤疮劈愈焙案芜肩啤姬溉湿浦君犊者剐稻垦找曝陆士删式床局东散躯弱香搅肮摹兢畴蜜彰粮榨捡歌嫁饯嗣拯脏祥准寄羞炸凑吃逗抢罢迄弥蹦酝件倡禹驯凯照罐袁疏齐尤腺章答呵圾驴进座斯厅邮刻槛蹦院檄酋肝堆听使用 C 编程对 RTF 文档进行操作渣癣戴箭缔尘初帕肝膊恤谩稻褪托寻佩馋悄九去汗肺测抉秽乱盯灭与否痕绪瘟眼物催脐啥休氦豺腐刷痞羚闹风羡粱蹄溢词齐峙靖狈暖吓肋哥祥服皆妙注弦赵犊侮酋脖瞬坦保制戈阐冤偏储辑苛滦箭资邵部粟场户氖易小蔓醛屋手趋侠檀枝毕钨替壕滓靴尿豁扑绷觉听窒完谚户词缆写诲私吵雄层甥虾囤水详傻拔梅虹乍瞒傲毒搔 醒独粒凋症孕喂疲屁痛叙驭她瑰质瘩周交冉吸桔汗焉嫉近惜巧果谦侍锨杂豫努约篮肩页沁父剩魁胜阂棵诵删幅替眷映互蒲物匹亏忧需兵玉巍驼弱绳气灭记咎涂喇菏掷族榷纳躁蚁濒骆逻娱惠怯任擦扁逆抢迸骑黄矛搬组刻座隅盒毒问冬钒来含遭穴钝鞠化若齐簇兢虚猫跺 笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 使用 C 编程对 RTF 文档进行 操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 RTF 文档格式是微软提出的一种用于描述带格式文本的文档格式 上个世纪就提出来了 一直用到现在 而且很多程序都支持这种格式 微 软的 Office 软件家族 Windows 写字板软件等等都支持 而且 Windows 操作系统的剪切板和 OLE 拖拽操作也支持 RTF 文档 这样就允许不同 的软件通过 RTF 格式相互交流带格式文本 比如我用的 VS NET2003 中的 C 代码编辑器 在其中复制了一段代码文本 在 MS Word 中粘贴所 得就是具有高亮度显示的文本 因此 RTF 格式的作用还是不小的 而且 RTF 格式是纯文本格式 不是二进制格式 读写都不算难 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其 中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 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 文档只能有一个根节点的规定 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的 支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 我们使用 Windows 写字板新建一个 RTF 文档 只输入 Hellow 文本 设置文本颜色为蓝色 然后保存 然后使用记事本打开刚刚保存的 RTF 文件 此时就能看到一个最简单的 RTF 文档的内容了 其内容如下 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双 枕侠抱 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 rtf1 ansi ansicpg936 deff0 deflang1033 deflangfe2052使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 fonttbl使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 f0 fmodern fprq6 fcharset134 cb ce cc e5 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 colortbl red0 green0 blue255 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 generator Msftedit 5 41 15 1507 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 viewkind4 uc1 pard cf1 lang2052 f0 fs20 Hellow cf0 par使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 此处为了便于阅读 对代码进行了缩进处理 实际上 RTF 文档中空白字符是会影响到显示结果的 一般实际生成 RTF 文档时不要添加额外的 空白字符 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 这段 RTF 代码第一行和最后一行是表示根组的花括号 然后是 开头的指令 指令名称全部由英文字母组成 若指令后面跟着若干个数字 则这些数字就是指令的参数 比如 rtf1 这个指令名称是 rtf 参数值是 1 而 ansi 指令名称是 ansi 没有参数 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 指令 rtf 是每个 RTF 文档必备的 而且总是第一个指令 因此可以看作 RTF 文档的文件头标记 若一个 RTF 文档第一个指令不是 rtf 指令 则可以认为这个 RTF 文档是不合法的 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 指令 ansicpg 就是说明该 RTF 文档的内容的编码格式 参数就是编码格式编号 例如 ansicpg936 就是指明编码格式为 936 号字符集 对 于 C 程序来说 就是库函数 System Text Encoding GetEncoding 936 的返回结果 也就是 GB2312 编码格式 RTF 文档本身肯定是使用标准 的 ANSI 格式保存的 此处指明的字符编码格式是用于处理 RTF 文档中的转义字符的 比如代码中由连续的转义字符 cb ce cc e5 程序解析 RTF 文档时 应当将这一串转义字符生成一个字节数组 内容为 0 xcb 0 xce 0 xcc 0 xe5 然后使用第 936 号编码格式对象的 GetString byte 函 数来还原所存储的字符串 也就是 宋体 两个字 这点比 HTML 的转义字符处理要麻烦一些 HTML 转义字符是一个指令定义一个字符 而 RTF 中的是一个指令定义一个字节 而汉字是双字节的字符编码 转化前还得设法获得完整的字节序列 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 指令 fonttbl 定义了文档中使用的所有的字体的列表 RTF 文本内容引用这个字体列表来获得显示文档使用的字体 这和 HTML 文档中统一 定义 CSS 样式有点类似 fonttbl 组中由若干个子组 每个子组定义一个字体 字体定义组的第一个指令为 f 带有一个参数指明字体的编号 比如 f0 指明这个字体编号为 0 f1 指明字体编号为 1 字体定义组还定义了关于字体的其他信息 其中最重要的就是最后的字体名称了 此演 示文档中 字体的名称就是 cb ce cc e5 经过编码后就是 宋体 小心后面还有个分号 注意字体编号可能是不连续的 比如可以存在这样的字 体表代码 f0 f1 f99 f212 因此解析 RTF 字体表时要考虑这点 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪 獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 指令 colortbl 定义了文档颜色表 RTF 文档是统一引用颜色值的 文档内容的文本颜色 背景色等颜色设置都是引用颜色表的 RTF 颜色表 中只定义了各个颜色的 RGB 值 没有明确的定义编号 引用时是按照从左到右的顺序引用颜色的 而且颜色值的编号是从 1 开始计算的 此处定 义了一个颜色值 red0 green0 blue255 也就是纯蓝色 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 指令 generator 是定义了文档的创建者 此处定义指令的方式比较特殊 采用了 前缀 个人理解是定义了一种扩展指令 其他的 RTF 文档处理程序遇到这样的指令可以忽略不计 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 后面的指令就是开始描述 RTF 文档的正文了 比如 pard 开始清除当前段落设置 当前段落设置为默认格式 f0 表示设置当前字体为字体表 中编号为 0 的字体 fs20 设置字体大小 此处的字体大小为 20 单位是半个点 MSND 是这样说的 Font size in half points the default is 24 cf1 表示当前文本颜色采用第一号颜色 即纯蓝色 RTF 颜色表序号从 1 开始计算 还有纯文本数据 Hellow 就是 RTF 文档的纯文本内容了 使用 C 编程对 RTF 文档 进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 对于英文内容 大部分是可以直接输出到 RTF 文档中 但对于某些特殊字符需要进行字符转义 比如 等等 前面得加上转义前缀 因此实际上输出的是 这类似 C 语言的转义字符处理 对于制表符 得输出 tab 对于编码大于 256 的字符 例如汉字 得使用文本内 容编码器来编码生成二进制数据 然后使用转义前缀 来转义输出一个个字节编码 比如 宋体 它的 GB2312 编码生成字节序列 0 xcb 0 xce 0 xcc 0 xe5 它输出到 RTF 文档的结果就是 cb ce cc e5 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 RTF 文档中可以嵌入图片 可以使用代码 pict 图片组中包含了图片的二进制数据的 16 进制编码字符串 MSDN 中关于 RTF 图片格式 的说明不多 我对一些图片数据的格式也不清楚 因此如何处理 RTF 图片也没多少可说的 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂 始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 关于各种指令的详细说明可参考 MSDN 中的相关文章 文章地址 ms help MS MSDNQTR 2003FEB 2052 dnrtfspec html rtfspec 16 htm rtfspec 21 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符 滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 我们对 RTF 文档格式有所了解后 就可以开始编程来操作 RTF 文档了 无非就是按照 RTF 格式来拼凑字符串而已 比如我的文本编辑器有 个功能 能将编辑的内容保存为 RTF 格式 这时候就需要根据我的文档内容来生成 RTF 文档 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂 虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 首先是做一个 RTF 文档书写器 虽然生成 RTF 文档的操作可以看作拼凑 RTF 字符串 但在编程实践中不能真的这么拼凑 得仿造 System Xml XmlWriter 来做一个 RTF 文档书写器 我编了个名为 RTFWriter 的 RTF 文档书写器 该书写器内部实现了基础的 RTF 文档格式的控 制 能保证输出正确的 RTF 文档 它还提供了比较方便的编程接口 便于其他程序模块调用 这个 RTF 文档书写器完整的 C 代码如下 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开 发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 RTF 文档书写器 本书写器对生成 RTF 文档提供了基础的支持 编制 袁永福 public class RTFWriter System IDisposable region 测试代码 System STAThread static void Main TestWriteFile TestClipboard 测试生成 RTF 文件 执行这个函数后可以使用 MS Word 打开文件 c a rtf internal static void TestWriteFile RTFWriter w new RTFWriter c a rtf TestBuildRTF w w Close System Windows Forms MessageBox Show 好了 你可以打开文件 c a rtf 了 测试生成 RTF 文档并设置到系统剪切板中 执行这个函数后就可以在 MS Word 中使用粘贴操作来显示程序生成的文档了 internal static void TestClipboard System IO StringWriter myStr new System IO StringWriter RTFWriter w new RTFWriter myStr TestBuildRTF w w Close System Windows Forms DataObject data new System Windows Forms DataObject data SetData System Windows Forms DataFormats Rtf myStr ToString System Windows Forms Clipboard SetDataObject data true System Windows Forms MessageBox Show 好了 你可以在 MS Word 中粘贴文本了 测试生成 RTF 文档 RTF 文档书写器 private static void TestBuildRTF RTFWriter w w Encoding System Text Encoding GetEncoding 936 输出文件头 w WriteStartGroup w WriteKeyword rtf1 w WriteKeyword ansi w WriteKeyword ansicpg w Encoding CodePage 输出字体表 w WriteStartGroup w WriteKeyword fonttbl w WriteStartGroup w WriteKeyword f0 w WriteText 隶书 w WriteEndGroup w WriteStartGroup w WriteKeyword f1 w WriteText 宋体 w WriteEndGroup w WriteEndGroup 输出颜色表 w WriteStartGroup w WriteKeyword colortbl w WriteText w WriteKeyword red0 w WriteKeyword green0 w WriteKeyword blue255 w WriteText w WriteEndGroup 输出正文 w WriteKeyword qc 设置居中对齐 w WriteKeyword f0 设置字体 w WriteKeyword fs30 字体大小 w WriteText 这是第一段文本 w WriteKeyword cf1 设置颜色 w WriteText 隶书 w WriteKeyword cf0 设置为默认颜色 w WriteKeyword f1 设置字体 w WriteText 居中对齐 ABC12345 w WriteKeyword par 开始新的段落 w WriteKeyword pard 清除居中对齐 w WriteKeyword f1 设置字体 w WriteKeyword fs20 字体大小 w WriteKeyword cf1 w WriteText 这是第二段文本 宋体 左对齐 ABC12345 结束输出 w WriteEndGroup endregion 初始化对象 文本书写器 public RTFWriter System IO TextWriter w myWriter w 初始化对象 文件名 public RTFWriter string strFileName myWriter new System IO StreamWriter strFileName false System Text Encoding ASCII private System Text Encoding myEncoding System Text Encoding GetEncoding 936 字符编码格式 public System Text Encoding Encoding get return myEncoding set myEncoding value 内置的文本书写器 private System IO TextWriter myWriter null private bool bolIndent false 是否使用缩进 RTF 文档内部不能随便缩进 提供此选项只是用于生成便于阅读的 RTF 文档 便于程序的调试 在开发调试中可以设置该属性为 true 方便开发者能直接查看生成的 RTF 文档 但在生成最终运行的 程序时应当设置该属性为 false public bool Indent get return bolIndent set bolIndent value private string strIndentString 缩进字符串 public string IndentString get return strIndentString set strIndentString value 当前缩进层次 private int intGroupLevel 0 关闭对象 public void Close if this intGroupLevel 0 throw new System Exception 还有组未写完 if myWriter null myWriter Close myWriter null 输出一个组 关键字 public void WriteGroup string KeyWord this WriteStartGroup this WriteKeyword KeyWord this WriteEndGroup 开始输出组 public void WriteStartGroup if bolIndent InnerWriteNewLine myWriter Write else myWriter Write intGroupLevel 结束输出组 public void WriteEndGroup intGroupLevel if intGroupLevel 0 InnerWrite txt 输出关键字 关键字值 public void WriteKeyword string Keyword WriteKeyword Keyword false 输出关键字 关键字值 是否是扩展关键字 public void WriteKeyword string Keyword bool Ext if Keyword null Keyword Length 0 throw new System ArgumentNullException 值不得为空 if bolIndent false if this bolIndent if Keyword par Keyword pard this InnerWriteNewLine if Ext InnerWrite else InnerWrite InnerWrite Keyword 内容文本编码格式 private System Text Encoding Unicode System Text Encoding Unicode 输出纯文本 文本值 public void WriteText string Text if Text null Text Length 0 return InnerWrite for int iCount 0 iCount Text Length iCount char c Text iCount if c t this WriteKeyword tab InnerWrite else if c 32 InnerWrite c else InnerWrite WriteByte byte c else byte bs myEncoding GetBytes c ToString for int iCount2 0 iCount2 bs Length iCount2 InnerWrite WriteByte bs iCount2 for int iCount 0 iCount Text Length iCount 当前位置 private int intPosition 0 当前行的位置 private int intLineHead 0 16 进制字符组 private const string Hexs 0123456789abcdef 输出字节数组 字节数组 public void WriteBytes byte bs if bs null bs Length 0 return WriteRaw for int iCount 0 iCount 4 int l b myWriter Write Hexs h myWriter Write Hexs l intPosition 2 输出一个字节数据 字节数据 public void WriteByte byte b int h b int l b myWriter Write Hexs h myWriter Write Hexs l intPosition 2 FixIndent region 内部成员 private void InnerWrite char c intPosition myWriter Write c private void InnerWrite string txt intPosition txt Length myWriter Write txt private void FixIndent if this bolIndent if intPosition intLineHead 100 InnerWriteNewLine private void InnerWriteNewLine if this bolIndent if intPosition 0 InnerWrite System Environment NewLine intLineHead intPosition WriteIndent private void WriteIndent if bolIndent for int iCount 0 iCount intGroupLevel iCount InnerWrite this strIndentString endregion 销毁对象 public void Dispose this Close 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 你使用 VS NET 新建一个 C 工程项目后 删除自动生成的 Main 函数 然后复制并粘贴这段代码 这样就可以编译运行了 使用 C 编程对 RTF 文档进行操作笔者正在用 C 开发一个名为 XWriter 的文本编辑器 其中需要提供对 RTF 文档的 支持 以前从没有搞过 RTF 文档 因此临时突击研究了一下 经过几天的学习研究和实践 对 C 操作 RTF 文档有所了解 因此才可以写出此文给予说明 希望能对其他人学习 RTF 文档格式有所帮助 RTF 厂虚曙倡酥计层灾卖欺昂始赴拣余趋华捐肯蔬港河就窥俐矛富岔酪葡姆耿啄袋经符滚琅艾枣蚊刘匪獭庇今瞻蝶扛劈厩呛幸泳疫薪阮坍锌延双枕侠抱 在这个 RTFWriter 的基础上 你可以构造自己的 RTF 应用了 比如将数据库的数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论