iText(http://www.lowagie.com/iText/)是使用Java語言實現的用于生成pdf文件的開源庫(MPL,LGPL).寫本文時,它的最新版本是2.1.5.除了pdf格式,最新版本的iText內置還可以生成rtf,html格式.
在iText中,有一套獨立于具體格式(pdf,html,rtf)文檔的文檔結構模型,iText的提供的api調用就基于這套模型開展.在iText中使用相同的Document對象生成的多種格式(pdf,rtf,html)的文檔,其版式可以盡可能的保持一致.(比如分頁位置,頁眉頁腳的格式,表格對齊,圖片位置還有文本字體等.)這也是由這套統一的文檔結構模型來保證的.
這套模型中并沒有規定如何實現文檔生成過程,但是描述了文檔在生成時需要包括的內容和需要滿足的要求,(比如文檔中表格的行列數,表格單元的內容,表格邊框的式樣,表格的位置等.)每一種具體格式的文檔在生成時,對照各自文檔所支持的特性各自實現文檔生成過程,并保證盡可能的與統一文檔結構一致.
iText文檔結構模型中的基本元素之一是Chunk類型,一個Chunk對象由一段文本加上一個字體對象組成,表示在最終文檔中,以這種特定的字體展示這段文本內容.另一種基本元素是Meta類型,一個Meta對象表述了最終文檔需要具有的一項屬性的值,目前Meta可以表述的屬性類型包括:文檔的主題,文檔關鍵字,文檔作者,文檔標題,文檔生產者(不可更改,默認是iText by lowagie.com)和文檔創建日期.最后一種基本元素是Header類型,它與Meta類似,不過它表述了一項用戶自定義的屬性的值.
iText文檔結構模型中的Phrase類型由Chunk類型聚合而來(ArrayList),它還包括了一個默認的字體對象,它表述了最終文檔中的一句短語的組成.而Paragraph類型又由Phrase聚合而來(ArrayList),它還包括了對對齊方式,首行縮進,段前空格等格式的具體描述,它表示最終文檔中的一個段落組成.
在iText文檔結構模型中,還對文檔正文的表格和列表進行了描述.Table類型被用來對最終文檔中的表格的組成進行定義.Table類型除了聚合了Row類型的對象外,還包括了表格的對齊方式,表格寬度,每列寬度,是否可插入等信息的具體描述,Row類型聚合了Cell類型的對象,還包括了行水平對齊方式的具體描述.Cell類型又可以聚合其他任何類型的文檔元素(如圖片,段落,列表等),除此之外,它還對列垂直對齊放格式,列寬度,做了具體描述.
List類型被用來對最終文檔中的列表的組成進行定義.它通過聚合ListItem類型的對象來描述內部各行的具體組成,除此之外,它還通過繼承的方式提供了幾種常見的列表樣式,如希臘字符樣式和羅馬字符樣式等.ListItem類型表述了列表中一行的組成它派生自Paragraph類型,表示列表的一個元素可以是一個段落.
在該文檔結構模型中,文檔的節和章分別由Secion類型和Chapter類型來描述組成.Section中可以包括Paragraph,List,Table或其他Section,除此之外它還描述了節的標題,標簽題目,節的序號,序號的格式等組成的具體信息.Chapter類型派生自Section類型,它可以認為是一個特殊的Section.
Image類型描述了文檔中一張圖片的信息如對齊方式,圖片位置,圖片格式等,它通過派生子類對多種具體類型的圖片提供支持.
此外,文檔模型還對字體,注釋等元素的信息的描述做了詳細規定.

posted on 2009-06-14 02:10
leexf 閱讀(2222)
評論(1) 編輯 收藏 所屬分類:
OpenSource技術研究