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 阅读(2213)
评论(1) 编辑 收藏 所属分类:
OpenSource技术研究