XWriterLib文本编辑器中间件软件技术白皮书

XWriterLib文本编辑器中间件软件

技术白皮书

(初稿)

 

 

 

袁永福

2007-11-5

 

 

 

 

 

 

前言

XWriterLib文本编辑器中间件软件是XDesigner图形软件工作室自主开发的有一个高级图形软件组件,为开发人员开发专业的富文本编辑器类型软件提供的强大的基础,本文档就是对XWriterLib文本编辑器中间件软件进行技术方面的说明,使得阅读者对XWriterLib软件有一个基本的认识,方便深入了解和开发。

以下将XWriterLib文本编辑器中间件软件简称为XWriterLib。

 

本文档合适的阅读者

本文档合适的阅读者是希望了解XWriterLib的计算机软件开发人员,本文档主要是对XWriterLib进行基本的技术说明,并不详细说明XWriterLib的开发接口和开发过程。欲了解XWriterLib详细的编程接口可参考XWriterLib的用户手册。

作者联系方式

对XWriterLib兴趣的人可以通过以下联系方式联系作者

yyf9989@hotmail.com

电子邮件yyf9989@sohu.com

袁永福个人网站http://www.xdesigner.cn

作者博客网址http://xdesigner.cnblogs.com由博客园http://www.cnblogs.com提供  

基本概念

本章对XWriterLib涉及到的一些概念进行说明,方便阅读者能更好的阅读和理解本文档。本章节涉及到富文本编辑器基本概念,MS DOT.NET的图形开发,文档对象模型,RTF文档格式等概念,若读者已经了解这些内容则可以跳过本章节。

文本编辑器/富文本编辑器

计算机最大的用途就是进行信息处理,其中很重要的就是文字信息处理,文字信息处理主要包括文字文档的输入,编辑,保存和打印等功能,此外用户界面上还要实现所见即所得的用户体验。这些都是专业的文字编辑器所必须的功能。

此外在很多情况下文字文档已经不限于普通的纯文本内容,而是一种所谓的富格式文本文档内容,在富文本文档中,用户可以设置文字的颜色,字体样式,还可以设置文档内容的的对齐方式,行间距和字符间距,此外还能插入图片等非文字内容。支持富文本文档格式的文本编辑器可称为富文本编辑器。以下所说的文本编辑器都是指富文本编辑器。

现在已经存在很多专业的文本编辑器类型软件,比如微软Word,金山WPS等大型的通用文字处理软件;还有一些小型的文本编辑器类型软件,比如Windows写字板。

文本编辑器使用非常广泛,是除操作系统外使用最广泛的软件类型。大部分计算机操作人员都需要使用文本编辑器来编辑各种文本文档,软件开发人员需要使用开发环境提供的代码文本编辑器来输入程序代码。可以预见,在未来很长的一段时间内,文本编辑器软件类型仍然是计算机软件的主要类型之一,是一种基础软件。

文本编辑器同时也是一种技术含量比较高的软件类型。开发文本编辑器涉及到很多计算机软件开发技术,包括文档加载和保存,文档对象模型,高级图形软件技术,高性能图形编程,文字排版技术等等。因此文本编辑器软件技术门槛高,开发难度大,需要有优秀的软件开发者来开发它。

在国内软件行业中,大部分软件开发者开发行业应用软件,其中部分客户需要文本编辑器类型的软件模块,而使用MS Word组件或IE浏览器组件等文本编辑器组件进行开发时由于受到这些组件本身的功能限制而且又没有源代码进行深入的二次开发,因此一些客户的需求难于满足或不能实现。根据微软一贯的商业策略,微软未来不大可能提供比标准RichTextBox更强大的文本编辑器组件,因此开发者不得不面临开发文本编辑器这种复杂软件的任务。

为此XWriterLib为这些开发者提供了一个新的选择,它提供了一个富文本编辑器的基本功能,可在它的基础上低成本的开发各种文本编辑器模块,并可经过授权获得其源代码,从而可以进行深入的二次开发而几乎没有限制的扩展其功能,从而满足客户的各种需求。

微软.NET图形开发

微软.NET平台是微软主导的软件开发平台,一定程度上代表着国际软件业的先进生产力,微软.NET提供了很多先进的特性,其中包括了相当强的图形开发功能。

相对于传统的Win32API/GDI图形开发模式,微软.NET对图形开发提供了更强的支持,而且开发接口更加友好。它提供的类库中名称空间System.Drawing下都是对图形编程接口。你可以使用面向对象的编程思想来进行图形开发。这样可以比以往更方便的开发类似文本编辑器这样的复杂图形软件。

虽然微软.NET对图形开发提供了更强的支持,仍然保留了对传统的Win32API/GDI的支持,在少数情况下仍然可以调用Win32API/GDI来实现一些图形效果,比如屏幕像素的反色,光标的处理,文字输入法的控制。

在大部分情况下使用微软.NET提供的标准图形开发接口,少数情况下使用Win32API/GDI的模式下,我们可以开发出一个文本编辑器类型软件,而且其中的工作量比完全用Win32API/GDI要少很多。

文档对象模型

文本编辑器要处理富文本文档,这种文档是一种比较复杂的数据结构,其中可能存在层次结构,还包含了多种文档元素,而且各种文档元素组织排序比较自由。对于这种复杂的数据结构,使用传统的面向过程的算法或者善于处理数据库的关系型算法都难于处理,此时比较合适的就是采用完全面向对象的文档对象模型技术来进行处理。

文档对象模型是面向对象编程思想在处理复杂文档的一个范例,其基本工作原理是:使用一个个内存中的编程对象映射到文档中的某个部分或元素,比如使用一个字符元素对象映射到文档中的一个字符,图片元素对象映射到文档中的一个图片。则应用程序读取和修改内存中的编程对象的数据,经过这些映射关系就转化为读取和修改文档内容。

文档对象模型是一种比较高级的软件设计模式,它比较充分的运用了面向对象编程思想的各种内容,包括封装,继承,重载等等,因此其开发过程比较复杂,但能处理一些复杂的数据结构,尤其是很适合处理比较复杂的富格式文本文档数据结构。因此文本编辑器处理文本文档时,基本上都得使用文档对象模型来操作文本文档,文本文档的文档对象模型是文本编辑器中的很核心的一个模块。

RTF文档格式

RTF文档格式为上世纪微软提出的富文本文档存储格式,它是一种基于ANSI字符集的依赖标记存储多种信息的文档格式。这种文档格式历史悠久,使用广泛,现在已有大量的软件支持这种文档格式,Windows操作系统本身也支持RTF格式。因此开发富文本文档编辑器很有必要支持RTF文档格式。若能支持RTF格式,则文本编辑器能通过RTF文档格式来和大量的其他软件交换文本文档。

RTF文档存储格式比较简单,但内容比较多,它使用一对花括号来定义一个标签组,标签组可以套嵌定义,使用一个斜线号“”来开始定义一个标签或指令。RTF文档中就使用这种简单的标签格式来定义文字,段落和图片等信息。

关于RTF文档格式的详细内容可参考微软提供的RTF文档技术手册。

 

XWriterLib介绍

XWriterLib开发背景

随着国内软件业的快速发展,越来越多的信息化系统实施和投入运行,客户的要求也越来越高,已经开始不满足于常规的基于关系型数据库的信息化系统,对软件系统的多个方面提出越来越高级的需求,其中包括对用户界面提出新的更高的需求。在一些情况下,客户可能提出文本编辑器类型软件的需求,要求能定制文本编辑器类型软件,这些软件除了具备常规的文本编辑功能外,还要根据自身业务需要添加其特有的功能。

软件开发者可以在一些已有的文本编辑器组件上进行比较简单的二次开发来实现这些功能,比如可以在RichTextBox,MS Word,IE浏览器等组件上进行开发,这一定程度上可以满足定制文本编辑器的功能需求,但由于这些文本编辑器组件没有足够灵活的编程接口,没有源代码或详细的技术支持,难于进行深入的涉及到组件底层的二次开发,因此仍然有相当多的客户需要的功能无法实现。根据微软一贯的商业策略,微软未来不大可能提供比标准RichTextBox更强大的文本编辑器组件。

在已有文本编辑器组件无法满足需求的情况下,开发者可以自己开发文本编辑器组件,但文本编辑器组件是相当高级的图形软件组件,涉及的软件技术多,开发难度大,开发时间长,而且文本编辑器这样的高级软件是有赖于相当优秀的软件开发者的全力开发,常规的人海战术是无法完成这样的开发任务。因此大量的开发者没有能力或没有时间开发自己的文本编辑器组件,这样由于技术原因导致了一些商业机会的流失。

有鉴于此,XDesigner图形软件工作室经过长期潜心研究,成功的开发了XWriterLib文本编辑器组件,该组件首先是一个功能比较全的富文本编辑器,此外还特别根据软件开发者的实际需要开放了非常灵活的全方位的编程接口,而且开发者经过授权可以获得源代码,可以进行深入的二次开发。在XWriterLib的基础上开发自己的文本编辑器能避免复杂的图形软件编程,减少工作量,降低开发成本,并能迅速满足客户的需求。

XWriterLib介绍

XWriterLib是XDesigner图形软件工作独立自主开发的富文本编辑器组件,具有完全自主知识产权,为软件开发者在微软.NET平台上的开发高度自定义的文本编辑器类软件提供了坚实基础。在XWriterLib的支持下,开发者可以获得以下能力

  1. 比较轻松的开发专业的文本编辑器类软件的能力。XWriterLib内部集成了富文本编辑器的基础功能,封装了所有的软件细节,并提供了友好的编程接口,开发者无需很强的软件开发能力就能轻松驾驭XWriterLib的强大功能,实现自己的文本编辑器。
  2. 可开发高度定制的文本编辑器类软件的能力。XWriterLib除了实现一般的文本编辑器的功能外,还针对开发需求,提供了一个非常灵活的全方位的面向对象的编程接口,特别是提供了一个可扩展的富文本文档对象模型,开发者可以在此基础上实现自己的文本文档功能。可以全方位的修改XWriterLib的功能,包括编辑时特性,排版特性,文档保存格式,打印控制。此外还能新增自己的文档元素类型,新增的文档元素类型能无缝的融入到XWriterLib的文档处理中。
  3. 深入进行二次开发的能力。开发者经过授权可以获得XWriterLib的源代码和技术支持,从而可进行深入的二次开发,能实现一些比较特殊的功能。比如可以实现文档分级动态部分锁定,文档内容的逻辑删除,自动执行精确的修改痕迹保留和查看,文档的分散保存和加载,向其他应用系统开放文档处理的WebService等功能,而这些功能是RichTextBox,MS Word等传统文本编辑器组件难于或者不能实现的。
  4. 可在任何类型的软件中快速高效的处理文档的能力。在某些没有图形用户界面且禁止访问桌面的软件中,比如ASP.NET或Windows服务等,常规的文本编辑器组件的使用受到限制,比如RichTextBox或基于IE浏览器组件的文本编辑器是不能运行的,而使用MS Word则会使用OLE自动化技术,这种技术很消耗系统资源,而且是不稳定的跨进程操作。而XWriterLib直接提供了文档处理编程接口,开发者可以在ASP.NET程序或Windows服务中放心的使用XWriterLib来快速处理文档,比如可以向其他软件提供文档视图的快照图片,打印输出等。
  5. 和微软.NET软件无缝集成的能力。XWriterLib完全用C#开发,全部采用托管代码来实现,因此可以和任何基于.NET平台的软件进行无缝集成,从而进行密切的协同工作。应用系统可以使用C#,VB.NET,C++.NET,DELPHI.NET或其他支持.NET的语言进行开发,但都可以轻松的调用XWriterLib。XWriterLib暂不支持MONO。
  6. 轻松部署的能力。XWriterLib是轻量级的文本编辑器组件,只依赖微软.NET框架提供的标准类库,不依赖任何其他第三方组件,所有的部分都包含在一个DLL文件中,这为开发者部署应用软件系统带来相当的便利。

 

XWriterLib技术说明

XWriterLib涉及到了很多的计算机软件开发技术,其中包含了不少高级开发技术,此处对其中的某些技术进行说明,方便开发者了解一些XWriterLib内部的技术细节,使得能更充分的调用XWriterLib的能力。

XWriterLib文档对象模型

XWriterLib文档对象模型(以下简称XDOM)是XWriterLib的核心模块。它是一种针对富文本文档而且充分考虑到二次开发需要的可扩展文档对象模型。开发者可以操作这个文档对象模型来操作XWriter文档,也可以通过扩展它来向XWriter文档添加新的文档元素类型。

XDOM内部建立了一个树状结构来详细描述文档结构,包括文档结构框架和各种细节信息,而且考虑到二次开发而开放了很丰富的编程接口,该接口的开放程度远大于MS Word或RichTextBox的编程接口。开发者可以使用XDOM接口来访问文档中的任何信息,而且可以在标准的XDOM上面派生出自定义的文档元素类型,新的文档元素类型可以扩展或重新定义标准文档元素的内容,图形样式和操作特性。

XDOM中比较重要的文档元素类型有

XTextElement文档元素基础类型

本类型是文档元素基础类型,所有的文档元素类型,包括XWriterLib中已经定义的文档元素类型还是未来开发者自定义的元素类型,必须是直接或间接的从XTextElement继承过来的。该类型定义了一些文档元素的通用接口,还包括文档元素在文档中的位置大小等基本信息。开发者可以使用这种类型来遍历文档中任意对象。

该类型是抽象类型(在C#中为 abstract 类型),因此不能实例化,只能从其上面派生出实际使用的文档元素类型,派生的类型需要重载其中的某些成员,用于支持自己的绘制过程和操作特性。

XTextElementContainer 容器元素类型

本类型是直接从XTextElement上派生的元素类型,它内部能放置若干个其他的文档元素,还能放置其他的容器元素。

XTextDocument 类型

本类型是从XTextElementContainer上派生的,用于表示文本文档对象,是XDOM的顶级节点。它定义了整个文档的一些信息,是外部程序访问XDOM结构的入口点。

XTextElement,XTextElementContainer和XTextDocument三种类型共同构成了XDOM的基本框架,形成已一个已XTextDocument为根节点的树状结构。外部程序以XTextDocument为入口点来访问整个XDOM。

 

在XDOM的基本框架上,XWriterLib还定义了一些常用的文档元素类型,主要有

XTextChar字符类型

XTextChar文档元素类型表示文档中的某一个字符,包括空白字符,文档中所有的字符都对应于一个XTextChar对象,因此应用程序可以使用XTextChar类型来快速而精确的访问文档中的任何字符,可以获得和修改单个字符的显示样式,包括字体,颜色,上下标等设置。

XTextImage 图片类型

XTextImage文档元素类型表示文档中的某个图片,并支持鼠标拖拽来改变图片大小。

XTextBookmark书签元素类型

XTextBookmark书签元素类型插入在文档中的某个地方,用于用户快速切换到书签所在的文本部分。

XTextParagraph 段落元素,XTextParagraphEOF 段落结尾类型

XTextParagraph,XTextParagraphEOF段落元素表示文档中的某个段落信息,XDOM中,每一个元素都属于某个段落(除了段落元素本身),而且元素所属的段落对象是随着编辑操作

来源:星哥如是说

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2012年4月20日
下一篇 2012年4月20日

相关推荐