我们将使用一个示例 Java Web 应用程序示范建立 Unicode 字体、生成字体规格文件和使用 stxx 生成 PDF 文档的步骤。
该示例应用程序将一些应用程序数据转换成 PDF。我们假设您对 XML、XSL-FO、Struts 和 J2EE 有一些了解。示例应用程序有以下两个版本:
第一个版本说明如果不使用嵌入式 Unicode 字体,为何生成的 PDF 不能正确显示双字节语言。
第二个版本示范了为双字节语言生成 PDF 需要添加的步骤。
本质上,这是同一个应用程序,只不过在 XML 配置文件中的一个标志控制下以两种模式运行。这种方法需要以 Unicode 编码的 XML 格式提供数据。很多 Web 应用程序都在某一点生成 XML,这样就可以将 XML 和适当的 XSL 交给 stxx FOP 来完成转换。但是,如果 XML 不是在应用程序中生成的,那么需要首先将应用程序数据转换成 XML。交给 stxx 的 XML 数据添加了地区信息。可以利用地区挑选出 PDF 文档中显示的适当静态信息和动态数据。比如,在生成 PDF 输出的订单状态应用程序中,可以使用适当的地区信息从资源绑定中挑选静态标签。
为了运行示例应用程序,我们使用了 Tomcat 4.1.30 和 stxx 1.3。Tomcat 是一种开放源代码的 servlet 容器。当然您也可以使用其他的 servlet 容器,无论是开放源代码产品,还是 IBM WebSphere Application Server 这样的商业产品。stxx 是 Struts 框架的扩展,不需要改变 Struts 的运行时行为就可以支持 XML 和 XSL。stxx 当前的版本是 1.3,它使用 FOP 0.20.4。
这个例子是一个简单的基于 Struts 的应用程序。我们使用 IBM WebSphere Studio 作为开发环境。(WebSphere Studio 使用 Eclipse 工具框架,可以与 Tomcat 服务器很好地集成在一起,并提供了 Java 和 XML 开发特性)。呈现为 PDF 格式的数据来自包含多语言内容(比如 )的 XML 文件。其中包含翻译成不同双字节语言的文本“Product Service”。初始化应用程序的时候,嵌入字体被加载到 Struts 系统中。使用 stxx 动作将 XML 文档转化成 stxx XML 格式,其中包括 Web 应用程序的地区信息。我们使用 Apache Jakarta Digester 模式将 XML 配置文件加载到 Struts 插件中。stxx FOP 转换器使用 XSL-FO 样式表进行 PDF 转换。样式表中明确使用了 Arial Unicode MS,它属于 Helvetica 字体家族,最终,字体信息嵌入在了 PDF 中。
解压 sample.war 文件后可以看到所有的配置文件和源代码。
图 2. XML 示例数据部署示例应用程序的步骤本文中的例子使用的是没有安装 Unicode 字体的 English 语言机器。如果您使用的是不同的机器(比如日语机器),步骤仍然一样。
可以在任何兼容 J2EE 的 servlet 容器中部署这个应用程序。下面是在 Tomcat 上安装该应用程序的步骤。(其他详细信息,请参阅 。)