阅读目录 html
本博客全部文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html node
本博客其余.NET开源项目文章目录:http://www.cnblogs.com/asxinyu/p/4329755.html 编程
我以前博客有一篇开源的Word读写组件的介绍:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html ,引发了很多人的关注,机缘巧合,也使得我结识了一些朋友,因为DocX的一些缘由(不稳定,更新很慢),我了解到了Aspose.Words这个组件,很是好,文档齐全,案例丰富,功能也不少,支持很是完善。因此我业余时间就把官方的文档和例子翻译和总结了一下,但愿对你们有点帮助,同时也对本身是一个提升。我决定把这个组件的使用做为一个系列,目前已经有2篇的内容,后面的要根据时间慢慢写。 设计模式
如对您有帮助,不要吝啬你的鼠标,支持一下哦,如翻译的很差,或者有错误漏洞,还请广大网友指出,一我的的能力毕竟有限,并且我只是一个业余打酱油的。 浏览器
Aspose.Words是一个商业.NET类库,可使得应用程序处理大量的文件任务。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其余格式。使用Aspose.Words能够在不使用Microsoft.Word的状况下生成、修改、转换和打印文档。在项目中使用Aspose.Words能够有如下好处。 安全
其丰富的功能特性主要有如下4个方面: 服务器
1)格式转换。Aspose.Words具备高质量的文件格式转换功能,能够和Doc,OOXL,RTF,TXT等格式互相转换。 多线程
2)文档对象模型。经过丰富的API以编程方式访问全部的文档元素和格式,容许建立,修改,提取,复制,分割,加入,和替换文件内容。 框架
3)文件渲染。能够在服务器端转换整个文档或者页面为PDF,XPS,SWF格式,一样能够转换文档页面为图像格式,或者.NET Graphics对象,这些功能和Microsoft.Word是同样的。 函数
4)报表。能够从对象或者数据源填充模版生成文件。
Aspose.Words能够在没有安装Microsoft Office的机器上工做。全部的Aspose组件都是独立,不须要微软公司的受权。总之, Aspose.Words在安全性、稳定性、可扩展性、速度、价格和自动化功能方面,是一个很不错的选择。
Aspose.Words能够运行在Windows,Linux和Mac OS操做系统上面。可使用Aspose.Words去建立32位或者64位的.NET应用程序,包括Asp.NET、WCF、WinForm等等,还可使用Com组件在Asp、Perl、PHP和Python语言中使用,一样能够在Mono平台上使用Aspose.Words创建.NET应用程序。
Aspose.Words能够运行在服务器和客户端,它是一个独立的.NET程序集,能够被任何.NET应用程序复制和部署。使用Aspose.Words能够在短期内产生成千上万的文档,能够打开文档,并修改格式和内容,填充数据并保存。Aspose.Words是多线程安全的,不一样的线程在同一时间处理不一样的文档。
虽然Aspose.Words拥有150多个公共类和枚举类型,可是Aspose.Words的学习曲线很小由于Aspose.Words的API是围绕下列目标精心设计的:
1) 借鉴一些著名的API设计经验,如Microsoft Word。
2) 借鉴.NET框架设计指南的经验。
3) 提供易于使用的详细的文档元素操做文档。
之前在项目中使用Microsoft Word的开发者,能够在Aspose.Words中找到不少熟悉的类、方法和属性。
Aspose.Words的文档对象模型(如下简称DOM)是一个Word文档在内存中的映射,Aspose.Words的DOM能够编程读取、操做和修改Word文档的内容和格式。理解DOM的结构和相应的类型,是使用Aspose.Words灵活编程的基础,这一点很是重要。下面的一个Word文档例子和其结构以下图所示:
当上述文档被Aspose.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类。
当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 |
表明一个词汇表文档,如构件,自动图文集或一个自动更正条目 |
Text |
一个文本段落,保护内联的节点 |
|
Text |
一个格式一致的文本块 |
|
Text |
一个书签的起点标记 |
|
Text |
一个书签的结束标记 |
|
Text |
一个特殊的字符指定一个单词字段的开始 |
|
Text |
单词字段的分隔符 |
|
Text |
一个特殊的字符指定一个单词字段的结束 |
|
Text |
一个表单字段 |
|
Text |
特殊字符类型,没有具体的 |
|
Tables |
Word文档中的表格 |
|
Tables |
一个表格对象的行 |
|
Tables |
表格行的单元格 |
|
Shapes |
Word文档中的图像,形状,文本框或者OLE对象 |
|
Shapes |
一组Shapes对象 |
|
Shapes |
一个文档中的Sharp或者图像,图表 |
|
Annotations |
文档中包括文本的脚注或者尾注 |
|
Annotations |
文档中包含文本的注释 |
|
Annotations |
一个相关的注释区域的开始 |
|
Annotations |
一个相关的注释区域的结束 |
|
Markup |
在一个段落内围绕一个或多个内嵌结构的智能标记 |
|
Markup |
文档中的某些结构的自定义XML标记 |
|
Markup |
文档中的一种结构化的文档标签(内容控制) |
|
Math |
表明Office的数学对象,如函数,方程或者矩阵 |
Aspose.Words文档的结构树很是重要,下面的设计吐能够更清晰的理解各个节点之间的包含关系。
文档和节:
从上图能够看出:
1.一个Document有1个或者多个Section(节)节点;
2.Section有1个Body(正文),没有或者有多个HeaderFooter节点;
3.Body和HeaderFooter能够包含多个块级节点;
4.1个Document可以有一个GlossaryDocument.
1个Word文档包含1个或多个节,一个节能够定义本身的页码,边距,方向,以及页眉页脚的文字;一个节保护主要的问题,如页眉,页脚(首页,奇数页,偶数页)。
Block-level节点的关系图以下所示:
从上图中能够看到:
1.Block-level元素能够出如今文档中的不少地方,如Body的子节点,脚注,评论,单元格其余元素。
2.最重要的Block-level节点是表格和段落;
3.1个表格有0行或者多行;
CustomXmlMarkup 和StructuredDocumentTag能够包含其余Block-level节点;
从上面的图表能够看到下列关系:
1.Paragraph是最常常出现的Inline-level节点;
2.Paragraph能够包含不一样的Run格式节点;也能够包含书签(bookmarks)和注释(annotations)
3.Paragraph还能够包含形状,图像,绘图对象等,以及智能标签;
Table能够包含不少行,行能够包含单元格,单元格能够包括block-level节点。
Aspose.Words将文档表示为一个有节点组成的树,所以就能够在节点之间互相切换。Aspose.Words提供了一个“文档浏览器”(DocumentExplorer),这是一个项目例子Demo。以下图所示:
能够经过Node类的ParentNode属性来访问上级节点,所以很方便获取父节点。文档对象模型是有大量的对象组合而成,他们的关系以下:
1.Node类是全部节点类的基类;
2.CompositeNode类是组合节点的基类;
3.Node类的中,没有子节点管理的接口,子节点管理的方法只出如今CompositeNode;
4.从Node类中移除子节点管理的方法,更干净,能够减小不少额外的转换;
第一篇基本介绍就介绍到这里,咱们能够看到这个组件的功能是很是强大的,特别是文档的转换保存,操做也很灵活,相比DocX固然要强大。只不过惟一不足它是商业的,本身业余玩玩却是没问题,源代码等下一篇写例子了,再发上来吧,至于官方的资料,是商业的,你们都懂的。至于途径吗,官方网站在这里:http://www.aspose.com/,国内的途径吧,CSDN比较多,呵呵。