跳過到頁腳內容
使用 IRONPDF FOR JAVA

如何在 Java 中向 PDF 添加數字簽名

本文將介紹如何使用 Java 程式中的IronPDF為 PDF 新增數位簽章。

IronPDF - 一個 Java PDF 庫

IronPDF Java PDF 庫概述是一個 Java 庫,它允許開發人員透過以下方式從頭開始建立新的 PDF 文件:將 HTML 字串轉換為 PDF將 HTML 文件轉換為 PDF將 Word 轉換為 PDF或 URL。 它可以透過新增或刪除內容,輕鬆地對 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 MethodPdfDocument 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 文件中,最後儲存它。

建立數位簽名

您需要使用 Adob​​e Reader 建立數位簽章證書,該證書將在 Java 程式碼中用於根據這些詳細資訊對 PDF 文件進行數位簽章。 您可以查看如何在 Adob​​e Reader 中建立數位簽章

開啟 Adob​​e Reader,然後點選"編輯" > "首選項" 。 然後點擊"簽名",並進一步了解"身份"和"受信任的證書"。

如何在Java中為PDF添加數位簽名,圖2:項目首選項 項目偏好

新增以下簽章域,使 .pfx 或 .p12 檔案成為文件。

如何在Java中為PDF新增數位簽名,圖3:新增數位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 以簽名文件作為參數新增簽名。 程式碼如下:

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

儲存 PDF 簽名文件

最後,讓我們儲存 PDF 檔案;否則,PDF 將不會使用saveAs MethodPdfDocument 類別進行簽署。 程式碼很簡單,如下所示:

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 文件。 使用 Adob​​e 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添加數位簽名?

您可以使用IronPDF在 Java 中為 PDF 新增數位簽章。具體步驟如下:建立或開啟 PDF 文檔,使用憑證文件產生數位簽名,然後使用 IronPDF 的 `SignatureManager` 類別套用簽名。最後,儲存已簽署的 PDF 文件。

如何使用Java庫將HTML轉換為PDF?

若要在 Java 中使用IronPDF將 HTML 轉換為 PDF,請使用PdfDocument.renderHtmlAsPdf方法。此方法可讓您將 HTML 字串直接轉換為 PDF 文檔,然後可以使用PdfDocument.saveAs方法儲存該文檔。

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

要在 Java 專案中使用IronPDF ,您需要一個 Java IDE(例如 IntelliJ)、用於管理依賴項的 Maven 專案以及IronPDF庫。此外,要新增數位簽名,還需要一個數位簽名證書。

Java 版IronPDF能否將其他文件格式轉換為 PDF?

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

IronPDF是否需要第三方函式庫來實現 PDF 功能?

不, IronPDF 的核心 PDF 功能不需要任何第三方函式庫,因此它是一個獨立的 Java PDF 建立和操作解決方案。

如何產生用於簽署PDF的數位簽章憑證?

使用 Adob​​e Reader,依序點擊“編輯”>“首選項”>“簽名”,然後管理“身分”和“受信任的憑證”,即可建立數位簽章憑證。

IronPDF中哪個類別用於管理 Java 中的數位簽章?

IronPDF中的SignatureManager類別用於管理 Java 中的數位簽章。它允許您向 PDF 文件添加新簽名並檢索現有簽名。

使用 Java 版IronPDF進行數位簽章還有哪些選項?

IronPDF in Java 提供了新增簽名影像、指定簽名聯絡人、地點和原因的選項,以及為數位簽名添加手寫和數位化影像的功能。

IronPDF是否有免費的 Java 版本?

IronPDF為個人開發提供免費試用版,且不含浮水印。商業用途則需另行購買授權許可。

IronPDF for Java有哪些進階功能?

IronPDF for Java 包含文字和圖像擷取、新增頁首和頁尾、渲染圖表和圖形以及處理 PDF 表單等功能。

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me