
如何在 Java 中向 PDF 添加数字签名
在本文中,您将学习如何在 Java 程序中使用 IronPDF 向 PDF 添加数字签名。
IronPDF - 一个Java PDF库
IronPDF 适用于 Java PDF库概览 是一个Java库,允许开发者通过将HTML字符串转换为PDF、将HTML文件转换为PDF、Word到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>
-
另一需要的依赖项是Slf4j-simple。 这是可选的,可以使用
pom.xml文件中的以下依赖项添加:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.5</version> </dependency>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;
现在,所需的一切已完成并准备好使用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>");
PDF文档已创建但尚未保存。 因此,下一步是创建一个数字签名,然后将其添加到该PDF文档中,并最终保存它。
创建数字签名
您将需要使用Adobe Reader创建一个数字签名证书,它将在Java代码中用于数字签名PDF文档。 您可以查看如何在Adobe Reader中创建数字签名。
打开Adobe Reader并点击编辑 > 首选项。 接着点击签名,类似更多的身份和信任证书。
项目首选项
添加以下签名字段以制作.pfx或.p12文件文档。
添加数字ID对话框
以下代码示例将使用Windows的.pfx证书文件和Mac的.p12文件以及其私钥(密码)在Java代码中创建一个新签名:
Signature signature = new Signature("Iron.pfx", "123456");
用数字签名签署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);
保存PDF签名文件
最后,我们来保存PDF文件;否则,使用PdfDocument类的[saveAs Method](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#saveAs(java.lang.String),PDF将没有签名保存。 代码简单如下:
pdf.saveAs("signed.pdf");
代码成功编译和执行后,输出产生了一个已数字签名的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());
完整代码如下:
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");
}
}
您可以从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 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.
Related Articles


