Seam目前包括了一个利用iText生成文档的组件集。Seam的iText文档支持主要关注于PDF文档的生成,但它也对生成RTF文档提供基本的支持。
iText支持由 jboss-seam-pdf.jar 提供。 这个JAR包中含有用来构造可以渲染成PDF的视图的iText JSF控件和把把渲染好的文档提供给用户的DocumentStore组件。 为了在你的应用程序中包括PDF支持,要把 jboss-seam-pdf.jar 和iText JAR 文件一起放在你的 WEB-INF/lib 路径下。 要使用Seam的iText支持就只是这样,无需更多的配置了。
Seam iText模块需要使用Facelets作为视图技术。这个库的未来版本也可能支持使用JSP。此外,这个模块还需要用到seam-ui包。
工程 examples/itext 包含了一个PDF支持实践的例子。 这个例子示范了正确的部署包,它包含一些例子,用来示范目前支持PDF生成的关键特性。
<p:document> | 描述 文档是由facelets文档利用命名空间 http://jboss.com/products/seam/pdf 中的标签生成的。 文档应该总是以 document 标签作为文件的根结点。 document 标签为Seam产生文档到文档库并渲染一个HTML重定向到存储内容做准备。 属性
Metadata属性
用法 <p:document xmlns:p="http://jboss.com/products/seam/pdf"> The document goes here.文档指向这里。 </p:document> |
有用的文档需要包含的不仅仅是文本。但是标准的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> The item costs 显示一件商品的价格<p:text value="#{product.price}"> <f:convertNumber type="currency" currencySymbol="$"/> </p:text> </p:paragraph> |
<p:font> | 描述 font标签为它内部的所有文本定义要使用的默认字体。 属性
用法 <p:font family="courier" style="bold" size="24"> <p:paragraph>My Title</p:paragraph> </p:font> |
<p:newPage> | 描述 p:newPage 插入一个新页面。 用法 <p:newPage /> |
<p:image> | 描述 p:image 将一张图片插入到文档中。 利用value 属性从classpath或者Web应用程序上下文加载图片。 资源也可以由应用程序代码动态地生成。 imageData 属性可以指定一个值为 java.awt.Image 对象的值绑定表达式。 属性
用法 <p:image value="/jboss.jpg" /> <p:image value="#{images.chart}" /> |
<p:anchor> | 描述 p:anchor 定义文档中的活链接. 它支持下面的属性: 属性
用法 <p:listItem><p:anchor reference="#reason1">Reason 1</p:anchor></p:listItem> ... <p:paragraph> <p:anchor name="reason1">It's the quickest way to get "rich"</p:anchor> ... </p:paragraph> |
<p:header> <p:footer> | 描述 p:header 和 p:footer 组件提供了将页眉和页脚文本放在生成文档的每个页面上的能力,除了第一个页面之外。页眉和页脚声明应该出现在文档的顶部。 属性
用法 <p:facet name="header"> <p:font size="12"> <p:footer borderWidthTop="1" borderColorTop="blue" borderWidthBottom="0" alignment="center"> Why Seam? [<p:pageNumber />] </p:footer> </p:font> </f:facet> |
<p:pageNumber> | 描述 通过 p:pageNumber 标签能够将当前页码放到页眉或者页脚的位置。 该标签只能用在页眉或者页脚的上下文中,并且只能使用一次。 用法 <p:footer borderWidthTop="1" borderColorTop="blue" borderWidthBottom="0" alignment="center"> Why Seam? [<p:pageNumber />] </p:footer> |
<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 标签。 |
标签 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 支持以下属性: 属性
用法 ... |
可以使用标签 p:table 和 p:cell 创建表格结构。 和许多表格结构不同,这里的的表格结构没有明确的行声明。如果一个表格有3列,那么每3个单元格会自动组成一行。 可以声明标题行和注脚行,并且当一个表格结构跨越多个页面的时候,标题行和注脚行就会重复地出现在每个页面上。
<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> |
本节例举了一些被属性在多个页面共享的常量。
Seam 尚未支持全部颜色的定义。目前只支持下面的颜色:white、gray、 lightgray、darkgray、black、 red、pink、yellow、 green、magenta、cyan 和 blue。
生成的文档无需其它的额外配置就可以使用。但是更加严格的应用程序则需要一些配置的要点。
默认的实现能够从一般的URL得到PDF文档,/seam-doc.seam。 许多浏览器(和用户)更倾向于见到包含实际PDF文档名诸如 /myDocument.pdf的链接。 这个功能需要一些配置。为了在浏览器中浏览PDF文件,所有的*.pdf资源都应该被映射到Seam Servlet过滤器以及DocumentStoreServlet:
<filter> <filter-name>Seam Servlet Filter</filter-name> <filter-class>org.jboss.seam.servlet.SeamServletFilter</filter-class> </filter> <filter-mapping> <filter-name>Seam Servlet Filter</filter-name> <url-pattern>*.pdf</url-pattern> </filter-mapping> <servlet> <servlet-name>Document Store Servlet</servlet-name> <servlet-class>org.jboss.seam.pdf.DocumentStoreServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Document Store Servlet</servlet-name> <url-pattern>*.pdf</url-pattern> </servlet-mapping>
文档存储组件中的 useExtensions 选项保证了文档存储时的扩展名和生成时的一致。
<components xmlns="http://jboss.com/products/seam/components" xmlns:pdf="http://jboss.com/products/seam/pdf"> <pdf:documentStore useExtensions="true" /> </components>
生成的文档保存在当前对话范围中直到对话结束。此时,文档的引用就无效了。 当对文档不存在时,你可以利用documentStore的 errorPage 属性指定要显示的默认视图。
<pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" />
<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 columnKey="2007" value="85.05" /> </p:series> </p:linechart> |
<p:piechart> | 描述 显示一个饼状图。 属性
用法 |
<p:series> | 描述 类数据可以分解成系列。series标签用于按照系列给一组数据分类,并且将样式应用到所有系列。 属性
用法 <p:series key="data1"> <ui:repeat value="#{data.pieData1}" var="item"> <p:data columnKey="#{item.name}" value="#{item.value}" /> </ui:repeat> </p:series> |
<p:data> | 描述 该数据标签描述要在图表中显示的每个数据点。 属性
用法 <p:data key="foo" value="20" sectionPaint="#111111" explodedPercent=".2" /> <p:data key="bar" value="30" sectionPaint="#333333" /> <p:data key="baz" value="40" sectionPaint="#555555" sectionOutlineStroke="my-dot-style" /> |
<p:color> | 描述 颜色组件声明一种颜色或者一组渐变的颜色,可以在绘制填充图形时使用。 属性
用法 <p:color id="foo" color="#0ff00f"/> <p:color id="bar" color="#ff00ff" color2="#00ff00" point="50 50" point2="300 300"/> |
...