cification v1.7》。
七、小结:RTF文档基本结构
通过对RTF文件的分析,我们得出一个RTF文件基本结构如下:
RTF文件<File>
文件头<header>
RTF版本/rtf
字符集<charset>
默认字体区域设置<deffont>
默认字体号/deff?
字体表<fonttbl>
文件表<filetbl>?
颜色表<colortbl>?
样式表<stylesheet>?
编目表<listtables>?
编目表{ /*/listtable }
编目替换表{ /*/listoverridetable }
段落组属性{ /*/pgptbl }
跟踪修订<revtbl>?
RSID表<rsidtable>?
生成器信息<generator>?
文档区<document>
文档信息区<info>?
标题<title>?
主题<subject>?
作者<author>?
经理<manager>?
公司<company>?
最后修改者<operator>?
文档类别<category>?
关键字<keywords>?
注释<comment>?
文档的版本号/version?
Word摘要信息中的注释<doccomm>?
内部版本号/vern?
创建时间<creatim>?
修订时间<revtim>?
最后打印时间<printim>?
备份时间<buptim>?
总编辑时间(单位:分钟)/edmins?
页数/nofpages?
字数/nofwords?
包含空格的总字符数/nofchars?
内部ID号/id?
文档格式属性<docfmt>*
节文本<section>+
节格式属性<secfmt>*
页眉页脚设置<hdrftr>?
段落文本<para>+
文本<textpar>|
项目符号与编号<pn>?
段落边框<brdrdef>?
段落格式属性<parfmt>*
定位对象与边框<apoctl>*
制表位设置<tabdef>?
段落底纹<shading>?
隐藏与否(/v /spv)?
表格<row>
行开始/trowd
行定义<tbldef>
单元格<cell>+
单元格定义+
单元格内容+
重复行定义<tbldef>
行结束/row
字符文本<char>+
图片<pict>
图片开始{/*/shppict {/pict }
图片属性
图片数据
对象<obj>
绘图对象/shp
脚注/footnote
注释<annot>
域<field>
八、学以致用:基于对象的RTF文件书写器设计
基于对RTF的学习运用,我通过VB实现了一个RTF输出工具类,可以实现文本、图片、表格(可以嵌入特殊文本、图片和水平、垂直合并)。基于此工具的病历示范输出也通过了基本测试。更进一步的研究和完善将在接下来的时间进行。
详细描述如下:
l RTF文档:
可以添加文本、图片、表格,支持页眉、页脚、页码、页眉对齐方式、页脚对齐方式、页码对齐方式。
基本方法:
Dim myRTF as New RTFCreator.clsRTFCreator
With myRTF
.PageHead = "页眉" ‘页眉
.PageHeadAlign = alm1_左端对齐 ‘页眉对齐方式
.PageFooter = "时间:" & Format(Now, "YYYY年MM月DD日 HH:nn:ss") ‘页脚
.PageNumber = True ‘是否显示页码
.PageNumberAlign = alm3_居右对齐 ‘页码对齐方式
End With
l 文本:
可以实现粗体、斜体、前景色(目前为固定颜色表)、字体大小、字体样式(目前为固定样式)、字符样式(目前为固定样式)、动画、水平缩放、雕刻、浮雕、字符间距、边框、阴影、删除线、双删除线、下标、上标、下划线(17种)、下划线颜色、隐藏文本、WEB下隐藏、字符边框(阴文)、字符阴影(阳文)、底纹背景色、底纹前景色、底纹样式(12种)、高亮显示、高亮颜色、对齐方式、项目符号等。
基本方法:
.AddText ‘添加文本,也可用.AddText “文本内容”,或者通过i=.AddText(“AAA”)返回索引值I,然后通过myRTF.Texts(i).Bold=True来设置属性。
.LastText.Bold = True ‘粗体设置
.LastText.FontStyle = ft1_标题1 ‘字体尺寸设置
.LastText = "文本" & vbCrLf ‘文本设置,如果需要回车,直接添加vbCrLf到文本中适当位置
.LastText.Alignment = alm2_居中对齐 ‘对齐方式
…其他设置
l 图片:
可以插入JPEG、GIF等图片,已经对输出速度进行了优化。可以设置图片对齐方式、文件名、大小、缩放比例、是否单独一行等。
使用方法:
.AddPicture (CommonDialog2.FileName) ‘文件名
.LastPicture.AddCRLF = True ‘独立一行
.LastPicture….其他设置(如对图像尺寸的设置)
l 表格:
可以设置单元格水平对齐、垂直对齐、上下左右边框是否存在、是否包含内部斜线(左上、左下)、边框样式(支持28种边框)、边框颜色、底纹类型、底纹背景色、底纹前景色、底纹明暗百分比、单元格宽度单位、单元格首选宽度、单元格右边界、是否是水平合并的首单元格、是否与前一单元水平合并、是否是垂直合并的首单元格、是否与前一定义垂直合并、行数、列数、文本适应单元格、不允许文本换行、是否嵌套、数据类型(目前支持简单文本、高级文本、图片三种类型,嵌套表格暂时不支持)。
使用方法:
myRTF.Addtable
With myRTF.LastTable
.Alignment = ral2_居中对齐
.AddRow '插入第1行
.LastRow.AddCell '第1行,第1列(该单元格为简单文本、默认)
.LastRow.BorderStyle = cbs03_双倍厚度边框
.LastRow.BorderColor = clr02_蓝色
.LastRow.BorderWidth = 75
.LastRow.AddCell '第1行,第2列(该单元格为高级文本,需要赋值)
Dim rtfTxt1 As cRTFText
Set rtfTxt1 = New cRTFText
.LastCell.DataType = cct1_高级文本
rtfTxt1.Bold = True
rtfTxt1.Text = "第(1,2)单元格内容:高级文本"
rtfTxt1.ForeColor = clr06_大红
rtfTxt1.FontSize = fs09_四号
Set .LastCell = rtfTxt1
.LastCell.MergeStart = True
.LastCell.BorderStyle = cbs25_双波浪线边框
.LastCell.BorderWidth = 75
.LastCell.BorderColor = clr10_深青
…其他设置
l 对象模型:
RTFCreator
RTFTexts
RTFText
RTFPictures
RTFPicture
RTFTables
RTFTables
RTFRows
RTFRow
RTFCells
RTFCell
RTFNodes
RTFNode
八、参考文献
1、Rich Text Format (RTF) Specification v1.5,Microsoft Technical Support, 5/97- GC0165
2、Rich Text Format (RTF) Specification v1.7,Microsoft Technical Support, 8/2001– Word 2002 RTF Specification,
★VB部分相关文章推荐:★