标题: 在 Web 应用程序中动态生成国际化的 PDF(1) [打印本页] 作者: look_w 时间: 2018-7-15 13:47 标题: 在 Web 应用程序中动态生成国际化的 PDF(1)
Internet 使得公司能够在国际市场上做生意。因此使用支持 Web 的方式为客户提供国际化的内容变得非常迫切。可移植文档格式(PDF)是一种流行的在 Web 上交付内容的格式,使用任何主流的浏览器都可以方便地下载 PDF 文档,然后使用 Adobe Acrobat Reader 来查看它,或者使用 Adobe 插件在浏览器中查看。为国际化的受众生成 PDF 内容提出了一项挑战,特别是日语、中文和韩语这类语言的双字节特性更需要专门考虑。Unicode 字体通常是一种不错的解决方法,但是这类字体可能是特定于平台的。另一个重要问题是,不能仅仅因为希望在普通的 HTML 之外使用 PDF 格式而改变应用程序逻辑。
我们首先对字体和语言作一般的讨论,然后介绍一种在 Java Web 应用程序中使用开放源代码技术生成 PDF 文档的方法。
字体概述字体是称为图符的字符图像以及从字符码到图符的映射的集合。字符是在特定书写系统中表示字母和数字这类对象的符号。呈现特定的字符时,表示这个字符的形状称为图符。计算机系统中使用的常见字体是 Unicode TrueType 字体。但是,TrueType 字体自身不足以呈现双字节语言中的数据。TrueType 字体是呈现大量字符的最佳选择,但是它是特定于系统的:
在 Windows 操作系统中,Microsoft 提供了 Arial Unicode MS 字体,支持多数语言中的字符显示,其中包括双字节语言。该字体放在一个单独的文件中,默认情况下,字体不用安装到用户的系统上。为了使用这种字体,可能需要 Windows 的国际化支持特性。
与 iText 的比较我们前面说过,FOP 是使用 XSL-FO 和 XML 进行 PDF 转换的开放源代码 Java 程序。另一种开放源代码的 PDF 转换程序称为 iText(请参阅 ),它采用面向对象的方法,并提供 Java 对象来呈现 PDF 文档。这两种方法各有优缺点,但我们认为 XSL-FO 模型在视图层上更适合模型-视图-控制器(MVC)架构。它还得到了 Struts for Transforming XML and XSL(stxx)扩展的支持,后者基于 Struts 应用程序框架。此外,这种方法更适合生成 PDF 报告,报告的模板可使用 XSL 指定,后者得到了 W3C 的支持。