如何在 Java 中向 PDF 添加数字签名
在本文中,您将学习如何在 Java 程序中使用 IronPDF 向 PDF 添加数字签名。
IronPDF - 一个Java PDF库
IronPDF for 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><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><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;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方法](/java/object-reference/api/com/Iron Software/ironpdf/PdfDocument.html#renderHtmlAsPdf(java.lang.String)的[PdfDocument类](/java/object-reference/api/com/Iron Software/ironpdf/PdfDocument.html)创建一个新的PDF文档以用于PDF签名。 代码如下
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");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");Signature signature = new Signature("Iron.pfx", "123456");用数字签名签署PDF文件
IronPDF通过使用SignatureManager类帮助添加签名证书。 [getSignature方法](/java/object-reference/api/com/Iron Software/ironpdf/PdfDocument.html#getSignature()帮助获取PDF文档的先前签名,然后可以使用[SignPdfWithSignature方法](/java/object-reference/api/com/Iron Software/ironpdf/signature/SignatureManager.html#SignPdfWithSignature(com.Iron Software.ironpdf.signature.Signature)将新签名添加到签名文件中作为参数。 代码如下
SignatureManager signatureManager = pdf.getSignature();
signatureManager.SignPdfWithSignature(signature);SignatureManager signatureManager = pdf.getSignature();
signatureManager.SignPdfWithSignature(signature);保存PDF签名文件
最后,让我们保存PDF文件;否则,PDF不会使用PdfDocument课堂的[saveAs方法](/java/object-reference/api/com/Iron Software/ironpdf/PdfDocument.html#saveAs(java.lang.String)签名。 代码简单如下:
pdf.saveAs("signed.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());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");
}
}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](/java/object-reference/api/com/Iron Software/ironpdf/signature/SignatureManager.html)类,帮助用户添加证书并使用签名字段签署PDF。
IronPDF方便开发者轻松快速地执行与PDF相关的任务。 它提供具有像素精准度的准确结果。 对于像Java这样多功能且广泛使用的编程语言,IronPDF非常适合处理PDF文档,因为它也很通用,并支持几乎所有的PDF操作。 此外,它构建在已经成功的.NET能力之上。
IronPDF还提供使用专为Java设计的快速IronPDFEngine轻松从不同文件格式转换的功能。 您可以使用IronPDF库提取或添加文本、加载和提取图像、向PDF添加页眉和页脚、注释、将图表和图形渲染到PDF、与PDF表单一起工作,以及更多。
您可以从Java PDF代码示例页面获取如何使用IronPDF的详细信息。
IronPDF免费提供给个人开发,并提供无需水印的免费试用来生成PDF文档。 它可以获得商业用途许可,其用户可以从此详细许可信息页面中获取更多关于许可的信息。
常见问题解答
如何在Java中添加数字签名到PDF中?
您可以通过创建或打开PDF文档、使用证书文件生成数字签名,并使用IronPDF的`SignatureManager`类应用签名来在Java中使用IronPDF添加数字签名。最后,保存已签名的PDF文档。
使用Java库将HTML转换为PDF的步骤是什么?
要在Java中使用IronPDF将HTML转换为PDF,利用PdfDocument.renderHtmlAsPdf方法。这使您能够直接将HTML字符串转换为PDF文档,然后可以使用PdfDocument.saveAs方法保存。
在Java项目中使用IronPDF的前提条件是什么?
要在Java项目中使用IronPDF,您需要一个Java IDE,比如IntelliJ,一个用于管理依赖项的Maven项目,以及IronPDF库。此外,添加数字签名时还需要一个数字签名证书。
IronPDF在Java中可以将其他文件格式转换为PDF吗?
是的,除了HTML,IronPDF还可以在Java应用程序中将各种其他文件格式(如Word文档和URL)转换为PDF。
IronPDF是否需要第三方库来执行PDF功能?
不,IronPDF在其核心PDF功能中不需要任何第三方库,使其成为一个独立的解决方案,用于在Java中创建和操作PDF。
如何生成用于签署PDF的数字签名证书?
可以使用Adobe Reader通过导航到“编辑”>“首选项”>“签名”,并管理身份和受信任的证书来创建数字签名证书。
IronPDF中用于在Java中管理数字签名的类是什么?
IronPDF中的SignatureManager类用于在Java中管理数字签名。它允许您添加新签名并从PDF文档中检索现有签名。
IronPDF在Java中数字签名的其他选项有哪些?
IronPDF在Java中提供选项来添加签名图像,指定签名联系人、位置和原因,以及将手写和数字化图像添加到数字签名。
IronPDF for Java是否有免费版本?
IronPDF提供了一个用于个人开发的免费试用版,可以不带水印使用。商业用途有许可选项。
IronPDF for Java的一些高级功能是什么?
IronPDF for Java包含功能如文本和图像提取、添加页眉和页脚、渲染图表和图形以及处理PDF表单。










