XWriterLib文本编辑器中间件软件

技术白皮书

(初稿)

袁永福

2007-11-5

前言

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

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

本文档合适的阅读者

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

作者联系方式

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

MSN yyf9989@hotmail.com

电子邮件 yyf9989@sohu.com

OICQ 28348092

袁永福个人网站 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中,每一个元素都属于某个段落(除了段落元素本身),而且元素所属的段落对象是随着编辑操作而动态的改变,因此在编辑过程中,文档对象的段落结构是动态的变化的,此时为了方便开发,XDOM是以XTextParagraphEOF为根据实时的构造出段落结构。

编程接口

XWriterLib的一个显而易见的特点就是提供了一个全方位高度透明的编程接口,这个编程接口以XDOM为核心,覆盖了XWriterLib的方方面面。开发者使用这个编程接口,可以快速精确的访问文档中的任何部分任何元素,而且这个编程接口可以应用到任何类型的.NET程序中,包括WinForm.NET,ASP.NET,命令行程序,Windows服务程序等等。

使用这个编程接口,开发者还可以方便的扩展XWriterLib,可以自定义文档元素类型,可以自定义文档的保存格式,保存过程,可以添加各种编辑用户体验。

经过授权,开发者还可以获得XWriterLib源代码的拷贝,开发者可以在XWriterLib源代码的基础上几乎不受限制的扩展XWriterLib的功能。

文档排版特性

XDOM是一种文本文档对象模型,因此其内容是采用流式排版样式,即文档元素根据先后顺序按照从左到右从上到下进行排列,目前XDOM只支持从左到右从上到下的排列,不支持其他的流式排版样式,比如不支持中东地区的从右到左从上到下的排列样式。

当XWriterLib加载新的文档时,会对整个文档进行排版,对整个文档计算文档行,计算分页,而当用户编辑文档而改变文档内容时,XWriterLib会根据需要计算部分文档的文档行和分页。这样可以减少一次编辑操作导致的文档排版工作量,提高编辑器响应用户编辑操作的速度,还能减少编辑文档时的用户界面闪烁现象。

XWriterLib对文档进行排版时,不是简单的将文档元素从左到右从上到下的进行排列,而是伴随着相当多的规则,其排版过程主要有以下规则

  1. 按照约定成俗,某些字符不能出现文档行首或行尾。不能出现在行首的字符称为后置标点,一般有“!),.:;?]}ǚˇˉD‖’”…∶、。〃々〉》」』】〕〗!"'),.:;?]`|}~¢”;不能出现在行尾的字符成为前置标点,一般有“([{·‘“〈《「『【〔〖(.[{£¥”。XWriterLib在进行排版时,若一个文本行的第一个字符是后置标点,则需要将上一个文本行的最后一个字符提出来放置到当前处理的文本行中,于是上一个文本行内部需要重新排版;若文本行最后一个字符是前置标点,而且文本行没有剩余的空间容纳下一个字符,则该文本行提前结束,将这个前置标点放置到下一个文本行中。
  2. 若文档中存在一段连续英文字母(26个英文字母,包括大小写)和阿拉伯数字字符,中间没有其他字符或非字符文档元素,则排版时将这段文字尽可能的安排到同一个文档行,使得这段文本尽可能的保持一个整体而不分开,若文档行剩余的空间不足以容纳这部分文本,则会提前换行,这会导致这个文本行出现了较大的空白区域。但在少数情况下,这段连续的字符长度超过的文档的显示宽度,则放弃该规则,仍然照常换行。
  3. 文档右边缘修正。文本行的宽度一般等于文档的显示宽度,是一个固定的值,而它包含的所有的文档元素的显示宽度之和却是不固定的,元素宽度和不一定等于文本行的宽度,这样导致文档行的右边缘看上去参差不齐,影响美观。为此需要修正文本行的右边缘,XWriterlib的做法是将文本行宽度减去文档元素宽度和所得的差,也就是文本行剩余的宽度,尽量平均分摊到文本行中各个元素上头,每一个元素都有一个显示宽度的修正量,如此文本行实现了右边缘修正,使得各个文本行的左右都对齐。
    若文本行元素个数比较多时,分摊到各个元素的宽度修正量比较小,则用户一般不会察觉到这个宽度修正量,若文本行元素比较少时,则分摊到各个元素的宽度修正量比较大,则用户会察觉到元素宽度修正量,此时文本行中的各个元素看起来非常松散。
    XWriterLib在进行文档右边缘对齐时还会考虑到连续的英文字母和阿拉伯数字字符,若文档中有连续的英文字符和阿拉伯数字字符,则这些字符之间是不会插入元素宽度修正量,此时它们应当承担的宽度修正量转移到其他元素上,制表符也不接收宽度修正量。这样处理也是考虑到文档的美观。
    若文本行只有一个文档元素或者它的最后一个字符是换行符(软回车和硬回车),则该文本行不进行右边缘修正。

所见即所得的编辑界面

XWrtierLib实现了所见即所得的编辑界面,它将编辑界面和打印预览界面集成在一起,编辑界面就是打印预览界面。在XWriterLib文本编辑器中显示的文档样式和实际打印输出的样式是完全一致的。用户在编辑修改文档的同时,XWriterLib会动态的对文档进行排版和分页操作,使得编辑界面一直和打印输出样式保持一致。XWriterLib内部采用各种优化算法,使得XWriterLib动态的保持这种所见即所得的能力而不影响用户流畅的编辑文档。

XWriterLib的所见即所得的功能是基于微软.NET框架提供的图形显示和打印能力的。XWriterLib在计算文档元素大小,排版和绘制文档内容时是采用“System.Drawing.GraphicsUnit.Document”图形度量单位,这种单位的刻度是1/300英寸,这是一种抽象的不依赖硬件的度量单位,因此XWriterLib就能在任意图形输出设备(包括显示器,打印机)上面实现文档准确的输出。

当文档显示在计算机屏幕上,由于还需要支持编辑操作,需要响应用户界面的鼠标键盘事件,而计算机屏幕是采用象素单位,象素单位是一种依赖硬件的度量单位,因此XWriterLib内部会进行这两种单位的转化,处理鼠标数据时需要将象素坐标转化为文档坐标,在显示文档时还需要将文档坐标转化为象素坐标。这种操作是相当复杂的,但它在XWriterLib内部自动完成的,开发者可以不用关心其中的具体算法。

XWriterLib还支持续打功能,当文本编辑器处于续打模式时,用户使用鼠标点击操作来设置续打位置,则文档整体被续打位置分割成两个部分,续打位置上面被蓝色半透明区域覆盖,而续打位置下面则是正常显示。在实际打印输出时,续打位置上方,也就是被半蓝色透明区域覆盖的部分文档,无论其中包含文本,图片或者自定义文档元素,将不会打印输出,只有续打位置下方的文档部分才会打印输出,而且续打位置所在的那个文档页不会输出页眉和页脚。续打是XWriterLib提供的一种很特殊的打印方式,比较适合某些日志类型的文档的打印,在某些应用中这种功能是必须的。

对RTF文档格式的支持

RTF文档格式是一种应用非常广泛的富文本文档格式,XWriterLib支持RTF文档格式,XWriterLib能加载和保存RTF文档,将复制和粘贴RTF文档片断,还支持OLE拖拽将RTF文档片断从其他程序拖拽到正在编辑的文档中。相对于标准的RichTextBox组件,XWriterLib增强了对RTF文档的支持,能加载和保存某些标准RichTextBox不支持的文档特性,比如文本背景色,对超链接更好的支持等等。

XWriterLib内部自行处理RTF文档,不依赖其他组件来处理RTF文档,XWriterLib内部实现了RTF文档解析器和生成器,并将RTF的功能融入到XDOM中。

对HTML文档格式的支持

XWriterLib能将文档输出为HTML格式的文档,生成的HTML文档代码非常简洁,符合国际标准,没有垃圾代码,输出HTML文档时还能将文档中包含的图片使用PNG格式一并输出,因此能完整的输出图文并茂的文档。

XWriterLib内部实现了HTML文档生成器,因此XWriterLib能独立的输出HTML文档,不依赖其他组件。

文档的加载和保存

XWriterLib支持多种方式来加载和保存文档。XWriterLib内部支持RTF格式,因此简单的调用其接口来将文档以RTF格式进行加载和保存。开发者也可以使用纯文本格式来加载和保存无格式的文本内容。

XWriterLib内部使用一种XML序列化机制,能将文档序列化为XML文档,也可从XML文档反序列化生成文档,因此开发者可以使用XML格式加载和保存文档。

XWriterLib提供非常透明的编程接口,因此开发者可以直接遍历访问XDOM,获得其中文档包含的所有信息,然后自己设计文档格式,将XWriterLib的文档保存为自定义格式,这种过程也可以设计成反向执行,从而能根据自定义文档格式来加载文档。这种自定义文档格式可以是纯文本的,XML或者二进制格式。

XWriterLib不限制文档的保存格式,开发者可以将文档保存在本地文件系统,保存到数据库中,或者直接上传到WEB服务器上;也可以从本地文件,数据库,或者WEB服务器上来加载文档。

和其他软件的协同工作

XWriterLib支持OLE拖拽操作和Windows系统剪切板和其他软件交流数据,从而实现协同工作。

XWriterLib支持OLE拖拽操作将数据拖拽插入到文档中,支持多种数据格式。比如在Windows资源管理器中将一个扩展名为 bmp,png,jpg,jpeg,gif,emf的文件拖拽到文档中,则XWriterLib会将这个文件视为图片文件进行加载,若成功的加载图片则在文档中插入一个图片元素。若拖拽的数据直接是BMP格式,则会在文档中插入一个图片元素,该元素显示的图片就是拖拽的BMP图片。若拖拽的数据是RTF格式,则会解析该RTF数据,然后在文档中插入一个RTF文档片断,因此可以从Word拖拽一个文档片断到XWriterLib的文档中。若拖拽的数据是纯文本数据,则会根据这段纯文本在文档中插入一段文本内容。

XWriterLib支持系统剪切板来获得文档数据。比如在Windows资源管理器中复制一个扩展名为 bmp,png,jpg,jpeg,gif,emf的文件,则在XWriterLib粘贴时会在文档插入一个图片元素,当剪切板中就是一个BMP图片时,则粘贴操作会在文档中插入一个图片元素。当剪切板中是一个RTF文档片断时,则粘贴操作会在文档中插入一段RTF文档。若剪切板中是纯文本数据,则粘贴操作会在文档中插入一段纯文本内容。

XWriterLib支持向系统剪切板设置数据。XWriterLib 会将文档中的选中部分的纯文本数据和RTF数据同时保存到系统剪切板中。这样其他软件可以使用不同版本的数据,比如记事本等纯文本编辑器能粘贴其中的纯文本数据,与此同时MS Word 能粘贴其中的RTF文档数据。

运行环境

XWriterLib运行环境如下

操作系统 Windows2000,WindowsXP或者更高版本

微软.NET框架,版本1.1或更高版本

需要鼠标的支持。

开发语言支持

VB.NET,C#或其他支持微软.NET平台的开发语言。

版权说明

XWriterLib没有使用任何开源代码,所有程序设计和编程完全由袁永福独立完成的,具有完全的自主知识产权。请尊重作者的知识产权,请不要盗版,破解和反编译本软件。请支持国产原创软件。想了解详细信息请访问 http://xdesigner.cnblogs.com 。

XWriterLib文本编辑器中间件软件技术白皮书相关推荐

  1. 程序员常常会用到的几款文本编辑器

    对于从事网络编辑工作的人员来说,一款功能强大的文本编辑器是必不可少的,一般自带的记事本,功能相对比较简单,对于一些特殊的功能,例如:编辑文本.十六进制.ASCII码等就需要更加专业的文本编辑器.那么如 ...

  2. 直接拿来用!盘点四款优秀的开源协作文本编辑器

    工欲善其事,必先利其器.除了一些主流的编辑器,在开源界,又有哪些精小却非常实用的文本编辑器呢? 作者 | Jure Triglav 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNn ...

  3. 一款开源的协作文本编辑器

    作者 | Jure Triglav 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 多年来,我一直在为找到"完美"的协作文本编辑器而坚持不懈地努力.我 ...

  4. 推荐几款很棒的文本编辑器

    对于从事网络编辑工作的人员来说,一款功能强大的文本编辑器是必不可少的,一般自带的记事本,功能相对比较简单,对于一些特殊的功能,例如:编辑文本.十六进制.ASCII码等就需要更加专业的文本编辑器.那么如 ...

  5. 轻量级跨平台文本编辑器notepad--

    一.前言 公司电脑 16G内存,经常使用 90%甚至超过 (IDEA用3到4.5G) vs code 占用内存 300M,甚至 450M 左右 免费商用.占用内存低(30M) 的文本编辑器 重启软件, ...

  6. 转载:文本编辑器 UltraEdit/EmEditor/EditPlus/AptEdit 之超级评测

    转载:文本编辑器 UltraEdit/EmEditor/EditPlus/AptEdit 之超级评测 2009-07-15 18:32:25 文/deepview 出处: www.provesoft. ...

  7. 【物联网中间件平台-02】YFIOs技术白皮书(V1.1)

    文档名称 YFIOs技术白皮书 版本 V1.1.0 说明 增加 技术特色和优势 章节 作者 叶帆 日期 2012-12-27 历史 V1.0.0  叶帆 2012-12-20 文档列表 http:// ...

  8. 在线文档技术揭秘开篇 - 富文本编辑器

    前言 本文旨在向大家介绍在线文档的核心模块富文本编辑器技术,并介绍业内主流商业文档产品如何进行富文本编辑器技术选型. 富文本编辑器 富文本编辑器,Rich Text Editor, 简称 RTE, 是 ...

  9. 文本编辑器实现打开文件、保存文件、文件另存为、新建文件、软件关闭的功能

    文章目录 1 文本编辑器实现打开文件.保存文件.文件另存为.新建文件.软件关闭的功能 1.1 打开文件 1.2 保存文件 1.3 文件另存为 1.4 新建文件 1.5 软件关闭 1 文本编辑器实现打开 ...

最新文章

  1. 问题 A: 喷水装置(一)
  2. tensorflow2.0 与tensorflow1.0的性能区别
  3. php和java语言_JAVA语言和PHP语言的比较
  4. 解决wiremock中velocity脚本(.vm)中文编码乱码问题
  5. 2023年考研之路或将更难
  6. 企业级负载均衡如何实现
  7. AntDesign组件库的使用
  8. anaconda和python区别_初学 Python 者自学 Anaconda 的正确姿势是什么?
  9. ubuntu下使用vi是方向键变乱码 退格键不能使用的解决方法
  10. java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格
  11. 调试内存_如何调试Python 程序的内存泄露问题
  12. 尔雅网课鼠标移出停止播放解决办法
  13. GetTickCount() 函数的作用和用法
  14. 【Tensorflow教程笔记】常用模块 tf.data :数据集的构建与预处理
  15. 解压版tomcat安装配置
  16. PyQt在qrc文件中添加自定义字体并使用
  17. 使用 Inkscape 制作电子签名
  18. Django实现统计网站访问次数、访问 ip 、受访页面
  19. 计算机专业课程设计收获及总结,课程设计的心得体会
  20. linux系统查看进程

热门文章

  1. 《3小时快学期权》读书笔记
  2. [分享] 软件配置管理经典面试题
  3. C++精华基础贴[水木清华]
  4. linux个人桌面推扩情况,六种Linux桌面的最佳特性和最差特性
  5. vue中data定义数字类型_[乐意黎原创] Vue中data定义的三种方式和区别
  6. 杨耕身:封杀:很CCTV,很足协
  7. 抖音html 3d旋转扩大图片数量,抖音怎么上传高清照片 抖音多张图片怎么上传
  8. Latex学习笔记 ------字体设置, 篇章结构
  9. 论文编辑 | word公式编号
  10. linux mediainfo java,linux下安装mediainfo