IRONSOFTWAREHOME
在 JAVA 中使用 IRONPDF

如何在 Java 中向 PDF 添加数字签名

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

在本文中,您将学习如何在 Java 程序中使用 IronPDF 向 PDF 添加数字签名。

IronPDF - 一个Java PDF库

IronPDF 适用于 Java PDF库概览 是一个Java库,允许开发者通过将HTML字符串转换为PDF将HTML文件转换为PDFWord到PDF转换或URL来从零创建新的PDF文档。 它帮助轻松操控PDF,通过添加或删除内容。 它为PDF文档提供安全和数字签名选项以及数字签名。

IronPDF无需任何其他第三方库即可执行其任何与PDF相关的任务。 它还提供在不同文件格式之间进行转换的功能。 它提供跨平台支持,并专门为Java、Scala和Kotlin设计。

在Java中向PDF文档添加数字签名的步骤

前提条件

为了给PDF文档进行数字签名,需要以下先决条件:

  • 已安装的任何Java IDE(NetBeans、Eclipse、IntelliJ) - 本文将使用IntelliJ。 您可以从Oracle Java SE下载页面独立下载Java开发工具包。
  • Maven Java项目用于自动化 - 这将帮助下载和管理Java程序中的依赖项。 您可以从Apache Maven下载页面下载Maven。
  • 下载并安装了IronPDF库 - 为了下载和安装IronPDF,请包含其Maven依赖项工件。 您可以在pom.xml文件的依赖标签中添加以下代码片段:
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2023.2.0</version>
</dependency>
XML
  • 另一需要的依赖项是Slf4j-simple。 这是可选的,可以使用pom.xml文件中的以下依赖项添加:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.5</version>
    </dependency>
    XML

如何在Java中添加数字签名到PDF中,图1:pom.xml文件 pom.xml文件

IronPDF导入Java包

主文件中需要以下导入。它允许使用IronPDF功能向PDF文档添加数字签名:

import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.Signature;
import com.ironsoftware.ironpdf.signature.SignatureManager;
import java.io.IOException;
import java.nio.file.Paths;
Java

现在,所需的一切已完成并准备好使用IronPDF在Java中向PDF文档添加数字签名。

创建PDF文件或打开现有PDF文件

了解如何数字签名PDF,有必要从零创建一个PDF文档或打开一个现有的PDF文档。 本文将使用[renderHtmlAsPdf Method](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#renderHtmlAsPdf(java.lang.String)和PdfDocument Class创建一个用于PDF签名的新PDF文档。 代码如下

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");
Java

PDF文档已创建但尚未保存。 因此,下一步是创建一个数字签名,然后将其添加到该PDF文档中,并最终保存它。

创建数字签名

您将需要使用Adobe Reader创建一个数字签名证书,它将在Java代码中用于数字签名PDF文档。 您可以查看如何在Adobe Reader中创建数字签名

打开Adobe Reader并点击编辑 > 首选项。 接着点击签名,类似更多的身份和信任证书。

如何在Java中添加数字签名到PDF中,图2:项目首选项 项目首选项

添加以下签名字段以制作.pfx或.p12文件文档。

如何在Java中添加数字签名到PDF中,图3:添加数字ID对话框 添加数字ID对话框

以下代码示例将使用Windows的.pfx证书文件和Mac的.p12文件以及其私钥(密码)在Java代码中创建一个新签名:

Signature signature = new Signature("Iron.pfx", "123456");
Java

用数字签名签署PDF文件

IronPDF使用SignatureManager类帮助添加签名证书。 getSignature Method帮助获取PDF文档的先前签名,然后可以使用[SignPdfWithSignature Method](/java/object-reference/api/com/ironsoftware/ironpdf/signature/SignatureManager.html#SignPdfWithSignature(com.ironsoftware.ironpdf.signature.Signature)使用签名文件作为参数添加新签名。 代码如下

SignatureManager signatureManager = pdf.getSignature();
signatureManager.SignPdfWithSignature(signature);
Java

保存PDF签名文件

最后,我们来保存PDF文件;否则,使用PdfDocument类的[saveAs Method](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#saveAs(java.lang.String),PDF将没有签名保存。 代码简单如下:

pdf.saveAs("signed.pdf");
Java

代码成功编译和执行后,输出产生了一个已数字签名的PDF。

如何在Java中添加数字签名到PDF中,图4:输出的PDF文件 输出 PDF 文件

IronPDF还提供其他签名选项,这是可选的,也可用于数字签名。 它包括以手写、计算机生成文本图像或数字化图像形式的签名图像。 以下代码示例帮助您为数字签名添加一些附加的安全选项:

signature.setSigningContact("support@ironsoftware.com");
signature.setSigningLocation("Chicago, USA");
signature.setSigningReason("To show how to sign a PDF");
BufferedImage signatureImage = ImageIO.read(new File("handwriting.png"));
WritableRaster raster = signatureImage.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
signature.setSignatureImage(data.getData());
Java

完整代码如下:

import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.Signature;
import com.ironsoftware.ironpdf.signature.SignatureManager;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;

public class DigitalSignatureExample {
    public static void main(String[] args) throws IOException {
        
        // Step 1. Create a PDF File Doc
        PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");

        // Step 2. Create a Signature.
        Signature signature = new Signature("Iron.pfx", "123456");

        // Step 3. Sign the PDF with the PdfSignature.
        SignatureManager signatureManager = pdf.getSignature();
        signatureManager.SignPdfWithSignature(signature);

        // Step 4. The PDF is not signed until saved to file, stream, or byte array.
        pdf.saveAs("signed.pdf");
    }
}
Java

您可以从PDF签名代码示例查看更多关于数字签名的信息。 如果您想添加更多安全性甚至编辑元数据,请查看安全和元数据代码示例

结论

本文逐步解释了如何使用IronPDF for Java向PDF文档添加数字签名。

首先,文章涵盖了使用IronPDF在Java中处理PDF所需的必要组件。 然后使用HTML字符串创建了一个简单的PDF文档。 从Adobe Reader创建了一个证书文件,用于签署原始PDF文档。 IronPDF提供了一个Signature以及SignatureManager类,帮助用户添加证书并在PDF中添加签名字段。

IronPDF方便开发者轻松快速地执行与PDF相关的任务。 它提供具有像素精准度的准确结果。 对于像Java这样多功能且广泛使用的编程语言,IronPDF非常适合处理PDF文档,因为它也很通用,并支持几乎所有的PDF操作。 此外,它构建在已经成功的.NET能力之上。

IronPDF还提供了从不同文件格式的轻松转换,使用专为Java设计的快速IronPDFEngine。 您可以使用IronPDF库提取或添加文本加载和提取图像向PDF添加页眉和页脚、注释、将图表和图形渲染到PDF、与PDF表单一起工作,以及更多。

您可以从Java PDF代码示例页面获取如何使用IronPDF的详细信息。

IronPDF免费提供给个人开发,并提供无需水印的免费试用来生成PDF文档。 它可以获得商业用途许可,其用户可以从此详细许可信息页面中获取更多关于许可的信息。

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

Related Articles

Key in blue circle

立即获取免费的 30 天试用版密钥

bullet_checked无需信用卡或创建账户
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge related to IronPDF Product Demo

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户