Aspose.Words组件介绍及使用—基本介绍与DOM概述

1.基本介绍

Aspose.Words是一个商业.NET类库,可使得应用程序处理大量的文件任务。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其余格式。使用Aspose.Words能够在不使用Microsoft.Word的状况下生成、修改、转换和打印文档。在项目中使用Aspose.Words能够有如下好处。node

1.1丰富的功能集

其丰富的功能特性主要有如下4个方面:编程

1)格式转换。Aspose.Words具备高质量的文件格式转换功能,能够和Doc,OOXL,RTF,TXT等格式互相转换。设计模式

2)文档对象模型。经过丰富的API以编程方式访问全部的文档元素和格式,容许建立,修改,提取,复制,分割,加入,和替换文件内容。浏览器

3)文件渲染。能够在服务器端转换整个文档或者页面为PDF,XPS,SWF格式,一样能够转换文档页面为图像格式,或者.NET Graphics对象,这些功能和Microsoft.Word是同样的。安全

4)报表。能够从对象或者数据源填充模版生成文件。服务器

1.2不须要Microsoft.Word

Aspose.Words能够在没有安装Microsoft Office的机器上工做。全部的Aspose组件都是独立,不须要微软公司的受权。总之, Aspose.Words在安全性、稳定性、可扩展性、速度、价格和自动化功能方面,是一个很不错的选择。多线程

1.3独立的平台

Aspose.Words能够运行在Windows,Linux和Mac OS操做系统上面。可使用Aspose.Words去建立32位或者64位的.NET应用程序,包括Asp.NET、WCF、WinForm等等,还可使用Com组件在Asp、Perl、PHP和Python语言中使用,一样能够在Mono平台上使用Aspose.Words创建.NET应用程序。框架

1.4性能和可伸缩性

Aspose.Words能够运行在服务器和客户端,它是一个独立的.NET程序集,能够被任何.NET应用程序复制和部署。使用Aspose.Words能够在短期内产生成千上万的文档,能够打开文档,并修改格式和内容,填充数据并保存。Aspose.Words是多线程安全的,不一样的线程在同一时间处理不一样的文档。函数

1.5最小的学习曲线

虽然Aspose.Words拥有150多个公共类和枚举类型,可是Aspose.Words的学习曲线很小由于Aspose.Words的API是围绕下列目标精心设计的:性能

1) 借鉴一些著名的API设计经验,如Microsoft Word。

2) 借鉴.NET框架设计指南的经验。

3) 提供易于使用的详细的文档元素操做文档。 之前在项目中使用Microsoft Word的开发者,能够在Aspose.Words中找到不少熟悉的类、方法和属性。

 

2.文档对象模型概述

2.1 DOM介绍

Aspose.Words的文档对象模型(如下简称DOM)是一个Word文档在内存中的映射,Aspose.Words的DOM能够编程读取、操做和修改Word文档的内容和格式。理解DOM的结构和相应的类型,是使用Aspose.Words灵活编程的基础,这一点很是重要。下面的一个Word文档例子和其结构以下图所示:

载入文件

spose.Words的DOM读取时,会建立以下结构的树形对象:

载入文件

从上图的结构和对应的Word文档,咱们能够看到大概的DOM中相关对象的结构,有了这些基本概念,就能够很流程的操做Word文档了。Document, Section, Paragraph, Table, Shape, Run 以及图中的其余椭圆形的都是Aspose.Words对象,这些对象具备树形的层级结构,图中的注释一样说明这些文档对象树中的对象具备多个属性。

Aspose.Words中的DOM有如下特色:

1.全部的节点(node)类最终都继承于Node类,它是Aspose.Words DOM的基本类型。

2.节点能够包含(嵌套)其余节点,例如Section和Paragraph都继承自CompositeNode类,而CompositeNode类来源与Node类。

2.2 Node类型

当Aspose.Words读取Word文档到内存中时,不一样类型的文档元素被不一样的类型对象来替代,每个文本框的text, paragraph, table, section都是Node对象,甚至文档自己都是一个Node。Aspose.Words为每一种文档节点类型都定义了一个类。

下面是一个UML类图,表示DOM中不一样node类型之间的关系。抽象类的名字用斜体表示。注意,Aspose.Words DOM中一样包括了一些非节点类型的类,例如Style, PageSetup, Font等等,它们没有在这幅图里面显示。

载入文件

看看这些主要的类及做用

Aspose.Words类 类别 描述
Document Document Document对象是文档树的根节点,提供访问整个文档的入口
Section Document Section对象对应一个文档中的一节
Body Document 是一节中的主要文本容器
HeaderFooter Document 一节中的特殊页眉或者页脚容器
GlossaryDocument Document 表明一个Word文档中词汇表的根条目
BuildingBlock Document 表明一个词汇表文档,如构件,自动图文集或一个自动更正条目
Paragraph Text 一个文本段落,保护内联的节点
Run Text 一个格式一致的文本块
BookmarkStart Text 一个书签的起点标记
BookmarkEnd Text 一个书签的结束标记
FieldStart Text 一个特殊的字符指定一个单词字段的开始
FieldSeparator Text 单词字段的分隔符
FieldEnd Text 一个特殊的字符指定一个单词字段的结束
FormField Text 一个表单字段
SpecialChar Text 特殊字符类型,没有具体的
Table Tables Word文档中的表格
Row Tables 一个表格对象的行
Cell Tables 表格行的单元格
Shape Shapes Word文档中的图像,形状,文本框或者OLE对象
GroupShape Shapes 一组Shapes对象
DrawingML Shapes 一个文档中的Sharp或者图像,图表
Footnote Annotations 文档中包括文本的脚注或者尾注
Comment Annotations 文档中包含文本的注释
CommentRangeStart Annotations 一个相关的注释区域的开始
CommentRangeEnd Annotations 一个相关的注释区域的结束
SmartTag Markup 在一个段落内围绕一个或多个内嵌结构的智能标记
CustomXmlMarkup Markup 文档中的某些结构的自定义XML标记
StructuredDocumentTag Markup 文档中的一种结构化的文档标签(内容控制)
OfficeMath Math 表明Office的数学对象,如函数,方程或者矩阵

2.3组成模式

Aspose.Words文档的结构树很是重要,下面的设计吐能够更清晰的理解各个节点之间的包含关系。

2.3.1 Document and Section

文档和节:

载入文件

从上图能够看出:

1.一个Document有1个或者多个Section(节)节点;

2.Section有1个Body(正文),没有或者有多个HeaderFooter节点;

3.Body和HeaderFooter能够包含多个块级节点;

4.1个Document可以有一个GlossaryDocument.1个Word文档包含1个或多个节,一个节能够定义本身的页码,边距,方向,以及页眉页脚的文字;一个节保护主要的问题,如页眉,页脚(首页,奇数页,偶数页)。

2.3.2 Block-level节点

Block-level节点的关系图以下所示:

载入文件

从上图中能够看到:

1.Block-level元素能够出如今文档中的不少地方,如Body的子节点,脚注,评论,单元格其余元素。

2.最重要的Block-level节点是表格和段落;

3.1个表格有0行或者多行;CustomXmlMarkup 和StructuredDocumentTag能够包含其余Block-level节点;

2.3.3 Inline-level节点

载入文件

从上面的图表能够看到下列关系:

1.Paragraph是最常常出现的Inline-level节点;

2.Paragraph能够包含不一样的Run格式节点;也能够包含书签(bookmarks)和注释(annotations)

3.Paragraph还能够包含形状,图像,绘图对象等,以及智能标签;

2.3.4 表格行单元格

载入文件

Table能够包含不少行,行能够包含单元格,单元格能够包括block-level节点。

2.4 设计模式与导航

Aspose.Words将文档表示为一个有节点组成的树,所以就能够在节点之间互相切换。Aspose.Words提供了一个“文档浏览器”(DocumentExplorer),这是一个项目例子Demo。

以下图所示:

载入文件

能够经过Node类的ParentNode属性来访问上级节点,所以很方便获取父节点。文档对象模型是有大量的对象组合而成,他们的关系以下:

1.Node类是全部节点类的基类;

2.CompositeNode类是组合节点的基类;

3.Node类的中,没有子节点管理的接口,子节点管理的方法只出如今CompositeNode;

4.从Node类中移除子节点管理的方法,更干净,能够减小不少额外的转换;

 

基本介绍就介绍到这里,咱们能够看到这个组件的功能是很是强大的,特别是文档的转换保存,操做也很灵活.实在是办公文档必备软件

Aspose免费公开课11月24日立刻开课啦~报名点我

相关文章
相关标签/搜索