Aspose.Words組件介紹及使用—基本介紹與DOM概述 (轉載)

       本博客全部文章分類的總目錄: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篇的內容,後面的要根據時間慢慢寫。 設計模式

如對您有幫助,不要吝嗇你的鼠標,支持一下哦,如翻譯的很差,或者有錯誤漏洞,還請廣大網友指出,一我的的能力畢竟有限,並且我只是一個業餘打醬油的。 瀏覽器

1.基本介紹

Aspose.Words是一個商業.NET類庫,可使得應用程序處理大量的文件任務。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其餘格式。使用Aspose.Words能夠在不使用Microsoft.Word的狀況下生成、修改、轉換和打印文檔。在項目中使用Aspose.Words能夠有如下好處。 安全

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文檔例子和其結構以下圖所示:

當上述文檔被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類。

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類中移除子節點管理的方法,更乾淨,能夠減小不少額外的轉換;

 

第一篇基本介紹就介紹到這裏,咱們能夠看到這個組件的功能是很是強大的,特別是文檔的轉換保存,操做也很靈活,相比DocX固然要強大。只不過惟一不足它是商業的,本身業餘玩玩卻是沒問題,源代碼等下一篇寫例子了,再發上來吧,至於官方的資料,是商業的,你們都懂的。至於途徑嗎,官方網站在這裏:http://www.aspose.com/,國內的途徑吧,CSDN比較多,呵呵。

相關文章
相關標籤/搜索