天天看點

Aspose.word元件介紹

閱讀目錄

  • 1.基本介紹
  • 2.文檔對象模型概述

       本部落格所有文章分類的總目錄:http://www.cnblogs.com/asxinyu/p/4288836.html

本部落格其他.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可以有以下好處。

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.1 DOM介紹

Aspose.Words的文檔對象模型(以下簡稱DOM)是一個Word文檔在記憶體中的映射,Aspose.Words的DOM可以程式設計讀取、操作和修改Word文檔的内容和格式。了解DOM的結構和相應的類型,是使用Aspose.Words靈活程式設計的基礎,這一點非常重要。下面的一個Word文檔例子和其結構如下圖所示:

Aspose.word元件介紹

當上述文檔被Aspose.Words的DOM讀取時,會建立如下結構的樹形對象:

Aspose.word元件介紹

從上圖的結構和對應的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.word元件介紹

 看看這些主要的類及作用

Aspose.Words類 類别 描述
Document Document對象是文檔樹的根節點,提供通路整個文檔的入口
Section Section對象對應一個文檔中的一節
Body 是一節中的主要文本容器
HeaderFooter 一節中的特殊頁眉或者頁腳容器
GlossaryDocument 代表一個Word文檔中詞彙表的根條目
BuildingBlock 代表一個詞彙表文檔,如構件,自動圖文集或一個自動更正條目
Paragraph Text 一個文本段落,保護内聯的節點
Run 一個格式一緻的文本塊
BookmarkStart 一個書簽的起點标記
BookmarkEnd 一個書簽的結束标記
FieldStart 一個特殊的字元指定一個單詞字段的開始
FieldSeparator 單詞字段的分隔符
FieldEnd 一個特殊的字元指定一個單詞字段的結束
FormField 一個表單字段
SpecialChar 特殊字元類型,沒有具體的
Table Tables  Word文檔中的表格
Row 一個表格對象的行
Cell 表格行的單元格
Shape Shapes Word文檔中的圖像,形狀,文本框或者OLE對象
GroupShape 一組Shapes對象
DrawingML 一個文檔中的Sharp或者圖像,圖表
Footnote Annotations 文檔中包括文本的腳注或者尾注
Comment 文檔中包含文本的注釋
CommentRangeStart 一個相關的注釋區域的開始
CommentRangeEnd 一個相關的注釋區域的結束
SmartTag Markup 在一個段落内圍繞一個或多個内嵌結構的智能标記
CustomXmlMarkup 文檔中的某些結構的自定義XML标記
StructuredDocumentTag 文檔中的一種結構化的文檔标簽(内容控制)
OfficeMath Math 代表Office的數學對象,如函數,方程或者矩陣

2.3組成模式

Aspose.Words文檔的結構樹非常重要,下面的設計吐可以更清晰的了解各個節點之間的包含關系。

2.3.1 Document and Section

文檔和節:

Aspose.word元件介紹

從上圖可以看出:

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節點的關系圖如下所示:

Aspose.word元件介紹

從上圖中可以看到:

1.Block-level元素可以出現在文檔中的很多地方,如Body的子節點,腳注,評論,單元格其他元素。

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

3.1個表格有0行或者多行;

CustomXmlMarkup 和StructuredDocumentTag可以包含其他Block-level節點;

2.3.3 Inline-level節點

Aspose.word元件介紹

從上面的圖表可以看到下列關系:

1.Paragraph是最經常出現的Inline-level節點;

2.Paragraph可以包含不同的Run格式節點;也可以包含書簽(bookmarks)和注釋(annotations)

3.Paragraph還可以包含形狀,圖像,繪圖對象等,以及智能标簽;

2.3.4 表格行單元格

Aspose.word元件介紹

Table可以包含很多行,行可以包含單元格,單元格可以包括block-level節點。

 2.4 設計模式與導航

Aspose.Words将文檔表示為一個有節點組成的樹,是以就可以在節點之間互相切換。Aspose.Words提供了一個“文檔浏覽器”(DocumentExplorer),這是一個項目例子Demo。如下圖所示:

Aspose.word元件介紹

可以通過Node類的ParentNode屬性來通路上級節點,是以很友善擷取父節點。文檔對象模型是有大量的對象組合而成,他們的關系如下:

1.Node類是所有節點類的基類;

2.CompositeNode類是組合節點的基類;

3.Node類的中,沒有子節點管理的接口,子節點管理的方法隻出現在CompositeNode;

4.從Node類中移除子節點管理的方法,更幹淨,可以減少很多額外的轉換;

文章來源位址:http://www.cnblogs.com/asxinyu/p/3242754.html