閱讀目錄 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比較多,呵呵。