跳至页脚内容
在 JAVA 中使用 IRONPDF

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

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

IronPDF - 一个Java PDF库

IronPDF for 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>
<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>
    <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;
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方法](/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>");
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");
Signature signature = new Signature("Iron.pfx", "123456");
JAVA

用数字签名签署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);
JAVA

保存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");
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());
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");
    }
}
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](/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表单。

Darrius Serrant
全栈软件工程师(WebOps)

Darrius Serrant 拥有迈阿密大学的计算机科学学士学位,目前在 Iron Software 担任全栈 WebOps 市场工程师。从小就被编码吸引,他认为计算机既神秘又易于接触,使其成为创意和问题解决的理想媒介。

在 Iron Software,Darrius 喜欢创造新事物,并简化复杂概念以使其更易理解。作为我们常驻的开发者之一,他还自愿教授学生,与下一代分享他的专业知识。

对于 Darrius 来说,他的工作令人满意,因为它被重视并产生真正的影响。