天天看點

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹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概述1.基本介紹2.文檔對象模型概述

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

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

從上圖的結構和對應的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元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

 看看這些主要的類及作用

aspose.words類

類别

描述

document

document對象是文檔樹的根節點,提供通路整個文檔的入口

section

section對象對應一個文檔中的一節

body

是一節中的主要文本容器

headerfooter

一節中的特殊頁眉或者頁腳容器

glossarydocument

代表一個word文檔中詞彙表的根條目

buildingblock

代表一個詞彙表文檔,如構件,自動圖文集或一個自動更正條目

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.paragraph.html">paragraph</a>

text

一個文本段落,保護内聯的節點

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.run.html">run</a>

一個格式一緻的文本塊

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.bookmarkstart.html">bookmarkstart</a>

一個書簽的起點标記

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.bookmarkend.html">bookmarkend</a>

一個書簽的結束标記

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.fields.fieldstart.html">fieldstart</a>

一個特殊的字元指定一個單詞字段的開始

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.fields.fieldseparator.html">fieldseparator</a>

單詞字段的分隔符

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.fields.fieldend.html">fieldend</a>

一個特殊的字元指定一個單詞字段的結束

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.fields.formfield.html">formfield</a>

一個表單字段

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.specialchar.html">specialchar</a>

特殊字元類型,沒有具體的

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.tables.table.html">table</a>

tables

 word文檔中的表格

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.tables.row.html">row</a>

一個表格對象的行

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.tables.cell.html">cell</a>

表格行的單元格

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.drawing.shape.html">shape</a>

shapes

word文檔中的圖像,形狀,文本框或者ole對象

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.drawing.groupshape.html">groupshape</a>

一組shapes對象

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.drawing.drawingml.html">drawingml</a>

一個文檔中的sharp或者圖像,圖表

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.footnote.html">footnote</a>

annotations

文檔中包括文本的腳注或者尾注

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.comment.html">comment</a>

文檔中包含文本的注釋

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.commentrangestart.html">commentrangestart</a>

一個相關的注釋區域的開始

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.commentrangeend.html">commentrangeend</a>

一個相關的注釋區域的結束

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.markup.smarttag.html">smarttag</a>

markup

在一個段落内圍繞一個或多個内嵌結構的智能标記

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.markup.customxmlmarkup.html">customxmlmarkup</a>

文檔中的某些結構的自定義xml标記

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.markup.structureddocumenttag.html">structureddocumenttag</a>

文檔中的一種結構化的文檔标簽(内容控制)

<a href="http://www.cnblogs.com/asxinyu/admin/aspose.words.math.officemath.html">officemath</a>

math

代表office的數學對象,如函數,方程或者矩陣

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

文檔和節:

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

從上圖可以看出:

1.一個document有1個或者多個section(節)節點;

2.section有1個body(正文),沒有或者有多個headerfooter節點;

3.body和headerfooter可以包含多個塊級節點;

1個word文檔包含1個或多個節,一個節可以定義自己的頁碼,邊距,方向,以及頁眉頁腳的文字;一個節保護主要的問題,如頁眉,頁腳(首頁,奇數頁,偶數頁)。

block-level節點的關系圖如下所示:

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

從上圖中可以看到:

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

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

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

customxmlmarkup 和structureddocumenttag可以包含其他block-level節點;

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

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

1.paragraph是最經常出現的inline-level節點;

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

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

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

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

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

【原創】Aspose.Words元件介紹及使用—基本介紹與DOM概述1.基本介紹2.文檔對象模型概述

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

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

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

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

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