从 Java 应用程序动态生成 PDF 文件

[复制链接]
查看11 | 回复8 | 2007-1-24 12:56:49 | 显示全部楼层 |阅读模式
许多应用程序都要求动态生成 PDF 文档。这些应用程序涵盖从生成客户对帐单并通过电子邮件交付的银行到购买特定的图书章节并以 PDF 格式接收这些图书章节的读者。这个列表不胜枚举。在本文中,我们将使用 iText Java 库生成 PDF 文档。我们将向您演示一个样例应用程序,以便您可自行完成它并能更好地理解它。
熟悉 iText V5.3.0 版
iText 是一个可从 http://itextpdf.com/ 免费获取的 Java 库(请参见 参考资料)。iText 库非常强大,且支持生成 HTML、RTF 和 XML 文档,还支持生成 PDF 文档。您可以选择各种各样的字体来用于文档中。另外,iText 的结构允许您使用相同代码生成上面提及的任何类型的文档。
iText 库包含使用各种字体生成 PDF 文本、在 PDF 文档中生成表格、向页面中添加水印等的类。iText 还提供了其他许多特性。在一篇文章中无法演示所有这些特性。我们将介绍生成 PDF 所需的基本知识。有关更多详细信息,请参阅供应商提供的文档(参见 参考资料)。
我们将使用 Eclipse 开发我们的样例应用程序。作为一个开源 IDE,Eclipse 可免费获取且非常强大。您可立即下载 Eclipse(参见 参考资料)。
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
iText API:详细了解
com.itextpdf.text.Document 是用于生成 PDF 文档的主要类。这是第一个需要实例化的类。创建文档之后,您需要一个编写器来向其中写入信息。com.itextpdf.text.pdf.PdfWriter 是一个 PDF 编写器。下面提供了其他一些常用的类:
com.itextpdf.text.Paragraph:此类表示一个缩进的段落。
com.itextpdf.text.Chapter:此类表示 PDF 文档中的一章。使用 Paragraph 作为标题、int 作为章节编号来创建该类。
com.itextpdf.text.Font:此类包含一种字体的所有规范,比如字体集、字号、样式和颜色。各种字体都在此类中声明为静态常量。
com.itextpdf.text.List:此类表示一个列表,反过来,该列表又包含许多 ListItems。
com.itextpdf.text.pdf.PDFPTable:这是一个表格,可放在一个绝对位置上,也可作为类 Table 添加到文档中。
com.itextpdf.text.Anchor:一个 Anchor 可能是一个引用,或是一个引用的目标。
在 Eclipse 中下载和配置 iText
作为一个纯 Java 库,iText 以 JAR 文件的形式提供(参见 参考资料)。下载该库之后(假设下载到路径 C:\temp),使用以下步骤在 Eclipse 环境中配置 iText 库:
在 Eclipse 中创建一个名为 iText 的新 Java 项目。
右键单击 Package Explorer 视图中的 iText 项目,选择 Properties。
单击 Java Build Path。在 Libraries 选项卡上,单击 Add External JARs。
找到 C:\temp 目录并选择此目录中的 itext-5.3.0.jar。
单击 OK。
iText 现在已配置,Eclipse 已准备好创建 Java 应用程序来生成动态的 PDF 文档。
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
[size=0.76em]样例应用程序[size=0.76em]还有什么能比您亲自创建的一个有效样例能更好地演示任何技术呢?现在您已拥有所需的工具 (Eclipse IDE) 和库 (iText library),我们已准备好设计和开发一个有效的样例程序。[size=0.76em]首先创建一个简单的 PDF 文档,该文档包含一些基本元素,比如纯文本、具有非默认字体的彩色文本、表格、列表、章、节等。此应用程序的用途是让您熟悉使用 iText 库的方式。有许多类为您执行了与 PDF 文档生成相关的大量工作。本文不可能介绍所有这些类。iText 的 javadocs 是有关如何使用这些类的一个不错的信息来源。接下来我们开始编码。[size=0.76em]第一步是创建一个文档。文档是一个 PDF 文档的所有元素的容器。
清单 1. 实例化文档对象

Document document = new Document(PageSize.A4, 50, 50, 50, 50);
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
[size=0.76em]运行样例应用程序下载样例应用程序 j-itextsample.jar(参见 下载)。将 j-itextsample.jar 解压到一个目录中,举例而言,如果将它解压到 C:\temp 中,这会将源代码和类文件放在 C:\temp\com\itext\test 中。打开一个命令提示符,并将目录更改为 C:\temp。在此命令提示符上设置您的系统的类路径。将 C:\temp\itext-5.3.0.jar 包含在系统的类路径中。在 Windows? 上,执行命令 set classpath=C:\temp\itext-5.3.0.jar;%classpath%。使用命令 java com.itext.test.ITextTest 运行应用程序。
[size=0.76em]该程序将在 C:\ 中生成 ITextTest.pdf 文档。图 3 显示了 PDF 文档的第一页的屏幕截图。
图 3. PDF 文档的屏幕截图

[size=0.76em]图 4 显示了 PDF 文档中的第 1 章和它的节、文本、表格、列表和图像的屏幕截图。
图 4. PDF 文档的屏幕截图

[size=0.76em]图 5 显示了 PDF 文档中的 Anchor 链接的屏幕截图。
图 5. PDF 文档的屏幕截图

[size=0.76em]结束语[size=0.76em]您已了解了生成 PDF 所涉及的一些基本元素。iText 的美妙之处在于,您可在不同类型的编写器中使用同一个元素的语法。另外,您可将编写器的输出重定向到控制台(对于 XML 和 HTML 编写器)、servlet 的输出流(对于对 PDF 文档的 Web 请求的响应)或任何其他类型的输出流。在响应相同、但响应类型各不相同(PDF、RTF、HTML 或 XML)的情形中,iText 也可派上用场。iText 允许您创建水印,加密文档以及其他输出细节。

回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
[size=0.76em]运行样例应用程序下载样例应用程序 j-itextsample.jar(参见 下载)。将 j-itextsample.jar 解压到一个目录中,举例而言,如果将它解压到 C:\temp 中,这会将源代码和类文件放在 C:\temp\com\itext\test 中。打开一个命令提示符,并将目录更改为 C:\temp。在此命令提示符上设置您的系统的类路径。将 C:\temp\itext-5.3.0.jar 包含在系统的类路径中。在 Windows? 上,执行命令 set classpath=C:\temp\itext-5.3.0.jar;%classpath%。使用命令 java com.itext.test.ITextTest 运行应用程序。
[size=0.76em]该程序将在 C:\ 中生成 ITextTest.pdf 文档。图 3 显示了 PDF 文档的第一页的屏幕截图。
图 3. PDF 文档的屏幕截图

[size=0.76em]图 4 显示了 PDF 文档中的第 1 章和它的节、文本、表格、列表和图像的屏幕截图。
图 4. PDF 文档的屏幕截图

[size=0.76em]图 5 显示了 PDF 文档中的 Anchor 链接的屏幕截图。
图 5. PDF 文档的屏幕截图


回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
[size=0.76em]该程序将在 C:\ 中生成 ITextTest.pdf 文档。图 3 显示了 PDF 文档的第一页的屏幕截图。
图 3. PDF 文档的屏幕截图

[size=0.76em]图 4 显示了 PDF 文档中的第 1 章和它的节、文本、表格、列表和图像的屏幕截图。
图 4. PDF 文档的屏幕截图

[size=0.76em]图 5 显示了 PDF 文档中的 Anchor 链接的屏幕截图。
图 5. PDF 文档的屏幕截图


回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
结束语
您已了解了生成 PDF 所涉及的一些基本元素。iText 的美妙之处在于,您可在不同类型的编写器中使用同一个元素的语法。另外,您可将编写器的输出重定向到控制台(对于 XML 和 HTML 编写器)、servlet 的输出流(对于对 PDF 文档的 Web 请求的响应)或任何其他类型的输出流。在响应相同、但响应类型各不相同(PDF、RTF、HTML 或 XML)的情形中,iText 也可派上用场。iText 允许您创建水印,加密文档以及其他输出细节。
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
结束语
您已了解了生成 PDF 所涉及的一些基本元素。iText 的美妙之处在于,您可在不同类型的编写器中使用同一个元素的语法。另外,您可将编写器的输出重定向到控制台(对于 XML 和 HTML 编写器)、servlet 的输出流(对于对 PDF 文档的 Web 请求的响应)或任何其他类型的输出流。在响应相同、但响应类型各不相同(PDF、RTF、HTML 或 XML)的情形中,iText 也可派上用场。iText 允许您创建水印,加密文档以及其他输出细节。
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
不可以直接调用xslt来生成PDF吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行