第18章. iText PDF 生成
18.1. 使用PDF支持
18.1.1. 创建一个文档
18.1.2. 基本的文本元素
18.1.3. 页眉和页脚
18.1.4. 章节
18.1.5. 列表
18.1.6. 表格
18.1.7. 文档常量
18.2. 图表
18.3. 条形码
18.4. 填写表单
18.5. 渲染Swing/AWT组件
18.6. 配置iText
18.7. 进一步的文件
Seam现在包括了一个生成iText文档的组件集。 Seam的iText文档主要是关注对PDF文档生成的支持, 但是Seam 也提供对RTF文档生成的基本支持。
18.1. 使用PDF支持
jboss-seam-pdf.jar提供iText支持。这个JAR包含iText JSF控件, 它被用来构建能渲染PDF的视窗,并且DocumentStore 组件,它提供渲染文档给用户。为在你的应用程序中包含PDF支持,jboss-seam-pdf.jar 连同iText JAR 一起包含在你的WEB-INF/lib 目录中。为使用Seam的iText支持不需要更进一步的配置。
Seam iText模块需要用Facelets作为视窗技术来使用。未来的库版本可能也支持JSP使用。另外,它需要seam-ui 包的使用。
examples/itext项目在实践中包含了一个PDF支持的例子。 它示范了正确的部署包,并且它包含一些例子,示范了目前支持的PDF生成的关键特性。
18.1.1. 创建一个文档
<p:document> |
描述 文档是由namespacefacelet XHTML文件利用了在http://jboss.com/products/seam/pdf命名空间中的标签生成。文档应该总是在文档的根结点有document标签。document标签为Seam生成一个文档到文档库和渲染一个HTML重定向到库内容做准备。 属性:
元数据属性
用法 <p:document xmlns:p="http://jboss.com/products/seam/pdf"> The document goes here. </p:document> |
18.1.2. 基本的文本元素
有用的文档需要包含的不仅仅是文本。然而,标准的UI组件是面向HTML生成的,并不利于生成PDF内容。作为替换,Seam提供了一种特殊的UI组件为生成适当的PDF内容。 如<p:image> 和 <p:paragraph>标签是简单文档的基础。如 <p:font>标签给围绕它们的所有内容都提供了字体信息。
<p:paragraph> |
描述 为了文本片能以逻辑组方式布局、格式化、样式化,大部分使用的文本被分成段落。 属性
用法 <p:paragraph alignment="justify"> This is a simple document. It isn't very fancy. </p:paragraph>
|
<p:text> |
描述 text 标签允许根据使用了标准的JSF转换机制的应用程序数据产生文本片段。它是非常类似于在渲染HTML文档时使用的 outputText 标签。 属性
用法 <p:paragraph> </p:paragraph> |
<p:html> |
描述 html标签渲染HTML内容成PDF。 属性 值 — 显示的文本。 用法 <p:html value="This is HTML with <b>some markup</b>." /> <p:html> </p:html> |
<p:font> |
描述 font标签为它内部的所有文本定义要使用的默认字体。 属性
用法 <p:font name="courier" style="bold" size="24"> |
<p:newPage> |
描述
用法 <p:newPage /> |
<p:image> |
描述
资源也能由应用程序代码动态生成。 属性 · · · · · · · · · · · · · · · · 用法 <p:image value="/jboss.jpg" /> <p:image value="#{images.chart}" /> |
<p:anchor> |
描述
属性 · · 用法 <p:listItem><p:anchor reference="#reason1">Reason 1</p:anchor></p:listItem> <p:anchor name="reason1">It's the quickest way to get "rich"</p:anchor> </p:paragraph> |
18.1.3. 页眉和页脚
<p:header> <p:footer> |
描述 p:header 和 p:footer 组件提供了将页眉和页脚文本放在生成文档的每个页面上的能力。除了第一个页面之外。页眉和页脚声明应该显示在文档的顶部。 属性
<p:facet name="header"> |
<p:pageNumber> |
描述 使用 p:pageNumber 标签能够把当前页码放到页眉或者页脚的内部。 页码标签只能用在页眉或者页脚的上下文中,并且只能使用一次。 用法
<p:footer borderWidthTop="1" borderColorTop="blue" borderWidthBottom="0" alignment="center"> Why Seam? [<p:pageNumber />] </p:footer> |
18.1.4. 章节
<p:chapter> <p:section> |
描述 如果产生的文档追求书/文章的结构,p:chapter 和 p:section标签能被用来提供必要的结构。 节只能用在章内,然而它们能任意深度地嵌套。大部分PDF阅读器在文档的章节间提供容易的导航 属性
用法 <p:document xmlns:p="http://jboss.com/products/seam/pdf" title="Hello"> <p:chapter number="1"> <p:title><p:paragraph>Hello</p:paragraph></p:title> <p:paragraph>Hello #{user.name}!</p:paragraph> </p:chapter> <p:chapter number="2"> <p:title><p:paragraph>Goodbye</p:paragraph></p:title> <p:paragraph>Goodbye #{user.name}.</p:paragraph> </p:chapter> </p:document> |
<p:header> |
描述 任何章或节可以包含一个p:title。 标题会紧挨着章/节数显示。标题的主体可以包含原始文本或是一个p:paragraph。 |
18.1.5. 列表
列表结构可以使用p:list 和 p:listItem 标签显示。列表里可以包含任意嵌套的子列表。列表项不能用在列表的外面。下面的文档使用ui:repeat标签显示取自一个Seam组件的值的列表。
<p:document xmlns:p="http://jboss.com/products/seam/pdf"
xmlns:ui="http://java.sun.com/jsf/facelets"
title="Hello">
<p:list style="numbered">
<ui:repeat value="#{documents}" var="doc">
<p:listItem>#{doc.name}</p:listItem>
</ui:repeat>
</p:list>
</p:document>
<p:list> |
属性
用法 <p:list style="numbered"> <ui:repeat value="#{documents}" var="doc"> <p:listItem>#{doc.name}</p:listItem> </ui:repeat> </p:list> |
<p:listItem> |
描述 p:listItem 支持以下属性: 属性
用法 ... |
18.1.6. 表格
使用p:table和 p:cell标签可以创建表结构。 不象其他表结构,没有明确的行声明。如果一个表有三列,那么每三个单元格会自动形成一行。页眉和页脚行可以声明,并且在活动的一个表结构横跨多个页面,它们会被重复。
<p:table> |
描述 p:table 支持以下属性。 属性
用法
<p:table columns="3" headerRows="1"> <p:cell>name</p:cell> <p:cell>owner</p:cell> <p:cell>size</p:cell> <ui:repeat value="#{documents}" var="doc"> <p:cell>#{doc.name}</p:cell> <p:cell>#{doc.user.name}</p:cell> <p:cell>#{doc.size}</p:cell> </ui:repeat> </p:table> |
<p:cell> |
描述 p:cell 支持下面的属性。 属性
用法 <p:cell>...</p:cell> |
18.1.7. 文档常量
本节评述了在多数标签上的属性所共享的一些常量
18.1.7.1. 颜色值
Seam文档还不支持全彩色规格。目前,仅支持命名颜色。它们是: white, gray, lightgray, darkgray, black, red, pink(粉红), yellow, green, magenta(洋红), cyan(青色) 和 blue。
18.1.7.2. 对齐值
在对齐值使用的地方,Seam PDF 支持下面的水平对齐值: left, right, center, justify 和 justifyall。 垂直对齐值: top, middle, bottom, 和 baseline。
18.2. 图表
使用jboss-seam-pdf.jar也提供对图表的支持。图表可以使用在PDF文档中,或者作为一图象使用在HTML页面。图表需要JFreeChart库(jfreechart.jar 和 jcommon.jar)被添加到WEB-INF/lib库目录。目前支持三种类型的图表:pie charts(饼状图表), bar charts(柱状图表)和 line charts(线状图表)。
<p:barchart> |
描述 显示一个柱状图表。 属性
用法
<p:barchart title="Bar Chart" legend="true" width="500" height="500"> <p:series key="Last Year"> <p:data columnKey="Joe" value="100" /> <p:data columnKey="Bob" value="120" /> </p:series> <p:series key="This Year"> <p:data columnKey="Joe" value="125" /> <p:data columnKey="Bob" value="115" /> </p:series> </p:barchart> |
<p:linechart> |
描述 显示一个线状图表。 属性
用法 <p:linechart title="Line Chart" width="500" height="500"> <p:series key="Prices"> <p:data columnKey="2003" value="7.36" /> <p:data columnKey="2004" value="11.50" /> <p:data columnKey="2005" value="34.625" /> <p:data columnKey="2006" value="76.30" /> <p:data column 发表评论
最新评论
|
评论
_______然后我固定这些空格,怎么弄呢?