如何在Java中创建PDF文件?

2025年5月7日 | 阅读6分钟

在前面的章节中,我们学习了 Apache POI 库。这是一个处理Microsoft Office文档的API。使用POI库,我们可以轻松创建DOC、DOCX、XLS、XLSX、PPT和PPTX文件。如果我们想使用Java程序在Java中创建PDF文件怎么办?在本节中,我们将学习如何使用Java程序创建PDF。

有各种库可用于使用Java程序创建PDF文件。其中一些是

  • Apache PDFBox
  • iText
  • PDF Clown
  • BFO
  • PJX
  • PDFjet
  • jPOD
  • ICEpdf

前两个库更受欢迎,并被开发人员广泛使用。因此,在本节中,我们将只讨论 **Apache PDFBox、iText** 和 **PDF Clown** 库。

Java Create PDF

Apache PDFBox

这是一个开源库,可用于处理PDF文档。它包含几个命令行工具。它允许我们创建、读取和操作PDF。它提供了各种字体。该库的最新版本是Apache PDFBox 3.0.0-RC1。该库具有以下功能

  • 提取文本:该库允许我们从PDF文件中提取Unicode。
  • 拆分和合并:我们还可以将一个PDF文件拆分成多个PDF,反之亦然。
  • 填充表单:从PDF表单提取数据或填充PDF表单。
  • 预检:根据PDF/A-1b标准验证PDF文件。
  • 打印:此功能允许我们使用标准的Java打印API打印PDF文件。
  • 另存为图像:我们还可以将PDF另存为JPEG和PNG等图像文件。
  • 创建PDF:它允许我们创建带有嵌入字体和图像的PDF。
  • 签名:此功能允许我们对PDF文件进行数字签名。

如何使用Apache PDFBox?

首先,我们必须安装该库。为了安装该库,请按照以下步骤操作

步骤1:转到 PDFBox 官方网站并下载PDFBox库。它将带您进入主页。

Java Create PDF

步骤2:在“当前版本”部分下,下载PDFBox 3.0.0-RC1版本的所有JAR文件。

Java Create PDF

逐一下载所有JAR文件。

  1. pdfbox-app-3.0.0-RC1.jar
  2. debugger-app-3.0.0-RC1.jar
  3. preflight-app-3.0.0-RC1.jar
  4. pdfbox-3.0.0-RC1.jar
  5. fontbox-3.0.0-RC1.jar
  6. preflight-3.0.0-RC1.jar
  7. xmpbox-3.0.0-RC1.jar
  8. pdfbox-tools-3.0.0-RC1.jar
  9. pdfbox-debugger-3.0.0-RC1.jar

步骤3:下载所需的JAR后,打开Eclipse IDE并创建一个Java项目。

步骤4:将所有下载的JAR添加到路径中。 **右键单击项目 -> 构建路径 -> 配置构建路径 -> 添加外部JARs -> 选择所有下载的JARs -> 打开 -> 应用 -> 应用并关闭**。执行所有步骤后,项目目录如下所示

Java Create PDF

步骤5:创建一个名为 **CreatePdf** 的类文件,并将以下代码写入其中。

CreatePdf.java

输出

Java Create PDF

让我们访问程序中提供的位置。我们将在指定位置获得一个名为 **Sample** 的空白PDF文件。

Java Create PDF

如果您不想执行上述步骤,只需创建一个Maven项目并在pom.xml文件中添加以下依赖项。

然后继续执行步骤5。

iText 库

iText也是一个开源的Java库,用于处理PDF。它用Java和.NET编写。使用iText,我们可以动态地创建PDF文件。它是一个强大的API,除了生成PDF之外,还支持生成HTML、RTF和XML文档。它提供诸如水印、生成PDF中的表格、字体等功能。虽然它是免费的,但如果您想在商业上使用它,则需要支付象征性的费用。

iText 的功能

  • 从XML文件或数据库生成动态文档。
  • 添加书签、页码、水印等。
  • 拆分、合并和操作PDF页面。
  • 自动填写PDF表单。
  • 向PDF文件添加数字签名。

该库包含许多可用于不同目的的类。该库最重要的类是 **Document** 类,它属于 **com.itextpdf.text** 包。它代表PDF文档实例。还有一个重要的类名为 **PdfWriter**,它将文本写入PDF。它也属于同一个包。

在运行程序之前,请下载 itextpdf-5.5.13.2.jar 文件并将其添加到项目的路径中(按照步骤4)。如果您为此创建了一个Maven项目,请在pom.xml文件中添加以下依赖项。

让我们创建一个Java程序,并使用iText库生成PDF。

GeneratePDF.java

输出

Java Create PDF

让我们访问程序中提供的位置。

Java Create PDF

我们在Java文件夹中获得一个名为 **Motivation.pdf** 的PDF文件。现在打开PDF文件,看看里面写了什么。

Java Create PDF

我们还可以为PDF文件设置属性(作者、日期、标题、主题等)。

一旦设置了属性,我们就可以在 **文档属性** 中看到它。

Java Create PDF

通过使用iText库,我们还可以生成密码保护的PDF文件。

生成受密码保护的PDF

要生成受密码保护的文件,我们需要使用一个名为 **BoucnyCastle** 的加密库。

BouncyCastle是一个加密库,它包含了加密算法的Java实现。它用于生成受密码保护的PDF文件。我们可以从Maven仓库下载 bcprov-jdk15on-1.69.jar 文件。下载后将其添加到项目中。

我们也可以将依赖项添加到pom.xml文件中。

PdfWriter 类提供了一个 setEncryption() 方法,该方法用于设置密码以生成PDF。

让我们创建一个Java程序来创建受密码保护的PDF文件。

GenerateProtectedPdf.java

输出

Java Create PDF

让我们访问程序中提供的位置。我们得到一个名为 **Account Details.pdf** 的文件。当我们尝试打开此文件时,它会要求提供密码。

Java Create PDF

为了打开受密码保护的文件,我们可以提供任何密码,即 USER_PASSWORD = "1234567" 或 OWNER_PASSWORD = "javatpoint"。当我们提供任何密码时,PDF文件会显示以下详细信息

Java Create PDF

该库还允许我们创建具有有限权限的PDF。

PDF Clown

PDF Clown是另一个开源且流行的Java和.NET库,也用于处理PDF。除了正常操作(创建、读取和操作)之外,PDF Clown还提供了一些其他主要功能,如下所示。

  • 强大的内容操作。
  • 增强页面渲染
  • 风格化的页面组合
  • 代码库中的广泛增强。
  • PDF光栅化器有助于内容渲染和打印。
  • 允许创建、读取和修改书签。
  • 允许创建、读取和修改Acroform字段。
  • 支持将内容分组到可切换的层中。
  • 高级文本提取功能。

类似地,我们可以使用PDF Clown库创建一个Java程序来生成PDF。在运行程序之前,请确保该库已正确添加到项目中。