跳至頁尾內容
USING IRONPDF FOR JAVA

如何在 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文件的dependencies標籤中新增以下程式碼片段:
<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 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>");
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文件doc。

如何在Java中為PDF新增數位簽名,圖3:新增數位ID對話框 新增數位ID對話框

下面的程式碼範例將使用.pfx憑證文件(Windows)和.p12文件(Mac)及其私鑰(密碼)在Java程式碼中建立一個新的簽名:

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

用數位簽章為PDF文件簽名

IronPDF有助於使用SignatureManager類新增簽章憑證。 [getSignature Method](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#getSignature()有助於獲取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);
SignatureManager signatureManager = pdf.getSignature();
signatureManager.SignPdfWithSignature(signature);
JAVA

保存PDF簽章文件

最後,讓我們保存PDF文件;否則使用PdfDocument類簽章的PDF不會被保存。 程式碼很簡單,如下所示:

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提供了一個SignatureSignatureManager類,幫助使用者新增憑證並使用簽章欄位簽署PDF。

IronPDF方便開發人員輕鬆快速地完成與PDF相關的任務。 它能夠生成像素完美的PDF,提供精確的結果。 對於像Java這樣多功能且廣泛使用的程式語言,IronPDF非常適合處理PDF文件,因為它也很通用,並支持幾乎所有的PDF操作。 此外,它是基於已經成功的.NET功能構建的。

IronPDF還提供易於從不同文件格式轉換的功能,使用專為Java設計的快速IronPDFEngine。 您可以使用IronPDF程式庫提取或新增文字載入和提取圖像向PDF新增頁眉和頁腳、註解、將圖表和圖形渲染到PDF、並處理PDF表單等。

您可以從Java PDF程式碼範例頁面獲得有關如何使用IronPDF的詳細資訊。

IronPDF為個人開發免費,並提供免費試用無浮水印以生成PDF文件。 它可以授權用於商業用途,其使用者可以從這個詳細授權資訊頁面獲得更多有關授權的資訊。

常見問題

我如何在Java中為PDF新增電子簽章?

您可以在Java中使用IronPDF來為PDF新增電子簽章,通過建立或打開PDF文件,並用證書文件生成電子簽章,使用IronPDF的`SignatureManager`類來應用簽章。最後,保存簽署后的PDF文件。

使用Java程式庫將HTML轉換為PDF的步驟有哪些?

要在Java中使用IronPDF將HTML轉換為PDF,可使用PdfDocument.renderHtmlAsPdf方法。這允許您將HTML字串直接轉換為PDF文件,然後可以使用PdfDocument.saveAs方法保存。

在Java專案中使用IronPDF需要哪些先決條件?

要在Java專案中使用IronPDF,您需要一個如IntelliJ的Java IDE、一個管理依賴的Maven專案和IronPDF程式庫。此外,對於新增電子簽章,上需有電子簽章證書。

在Java中IronPDF可以將其他文件格式轉換為PDF嗎?

是的,除了HTML之外,IronPDF還可以在Java應用中將多種其他文件格式如Word文件和URL轉換為PDF。

IronPDF需要第三方程式庫來實現PDF功能嗎?

不用,IronPDF在其核心PDF功能上不需要任何第三方程式庫,這使它成為在Java中建立和操作PDF的獨立解決方案。

我如何生成用於簽署PDF的電子簽章證書?

可以通過使用Adobe Reader進入編輯 > 偏好設定 > 簽章,管理身份和可信證書來建立電子簽章證書。

IronPDF中用於管理Java中電子簽章的類是哪個?

SignatureManager類是IronPDF中用於管理Java電子簽章的類。它允許您從PDF文件中新增新簽章和檢索現有簽章。

Java的IronPDF還提供哪些額外的電子簽章選項?

在Java中,IronPDF提供新增簽章圖像、指定簽名聯絡人、地點及原因,以及在電子簽章中新增手寫和數碼圖像的選項。

Java的IronPDF有免費版本嗎?

IronPDF提供免費試用個人開發,可以不帶水印使用,也有供商業使用的授權選項。

Java的IronPDF有哪些高級功能?

Java的IronPDF包括文字和圖像提取功能,新增頁眉和頁腳,渲染圖表和圖形,以及處理PDF表單。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話