如何在 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檔案的 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>也需要 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;現在,所有必要的工作都已完成,可以使用 IronPDF 在 Java 中為 PDF 文件添加數位簽名了。
建立 PDF 文件或開啟現有 PDF 文件
要學習如何對 PDF 進行數位簽名,需要從頭開始建立一個 PDF 文檔,或開啟一個現有的 PDF 文檔。 本文將使用PdfDocument Class的[renderHtmlAsPdf Method](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#renderHtmlAsPdf(java.lang.String)建立一個用於 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,然後點選"編輯" > "首選項" 。 然後點擊"簽名",並進一步了解"身份"和"受信任的證書"。
如何在 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");使用數位簽名簽署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);儲存 PDF 簽名文件
最後,讓我們儲存 PDF 文件;否則,PDF 將不會透過PdfDocument類別的[saveAs Method](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#saveAs(java.lang.String)進行簽署。 程式碼很簡單,如下所示:
pdf.saveAs("signed.pdf");pdf.saveAs("signed.pdf");程式碼編譯執行成功後,輸出結果為已進行數位簽章的 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());完整的程式碼如下:
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類,幫助使用者新增憑證並使用簽署網域對 PDF 進行簽署。
IronPDF 讓開發人員能夠輕鬆快速地執行與 PDF 相關的任務。 它能提供精準的結果,產生像素級完美的PDF檔。 對於像 Java 這樣用途廣泛且應用廣泛的程式語言來說,IronPDF 非常適合處理 PDF 文檔,因為它本身也用途廣泛,並且支援幾乎所有的 PDF 操作。 此外,它還建立在已成功的 .NET 功能之上。
IronPDF 還提供從不同文件格式輕鬆轉換的功能,它使用專為 Java 設計的快速IronPDFEngine 。 您可以使用 IronPDF 庫來提取或添加文字、加載和提取圖像、向 PDF 添加頁眉和頁腳、添加註釋、向 PDF 渲染圖表和圖形、處理PDF 表單等等。
您可以從Java PDF 程式碼範例頁面取得有關如何使用 IronPDF 的詳細資訊。
IronPDF 對個人開發用戶免費,並提供無浮水印的免費試用版,用於產生 PDF 文件。 它可以授權用於商業用途,使用者可以從此詳細許可資訊頁面獲取更多許可資訊。
常見問題解答
如何在 Java 中為 PDF 新增數位簽章?
您可以使用 IronPDF for Java 在 PDF 中加入數位簽章,方法是建立或開啟 PDF 文件,使用證書檔案產生數位簽章,並使用 IronPDF 的 `SignatureManager` 類應用簽章。最後,儲存已簽署的 PDF 文件。
使用 Java 函式庫將 HTML 轉換為 PDF 的步驟為何?
要使用 IronPDF for Java 將 HTML 轉換為 PDF,請利用 PdfDocument.renderHtmlAsPdf 方法。這可讓您直接將 HTML 字串轉換成 PDF 文件,然後再使用 PdfDocument.saveAs 方法儲存 PDF 文件。
在 Java 專案中使用 IronPDF 需要哪些先決條件?
要在 Java 專案中使用 IronPDF,您需要 IntelliJ 之類的 Java IDE、用於管理相依性的 Maven 專案,以及 IronPDF 函式庫。此外,若要新增數位簽章,還需要數位簽章證書。
IronPDF in Java 可以將其他檔案格式轉換為 PDF 嗎?
是的,除了 HTML 之外,IronPDF 還能在 Java 應用程式中將 Word 文件和 URL 等其他各種檔案格式轉換為 PDF。
IronPDF 是否需要第三方庫來實現 PDF 功能?
不,IronPDF 的核心 PDF 功能不需要任何第三方函式庫,因此它是用於 Java 創建和處理 PDF 的獨立解決方案。
如何產生簽署 PDF 的數位簽章證書?
數位簽章證書可使用 Adobe Reader 建立,方法是導覽至「編輯」>「偏好設定」>「簽章」,並管理身分和可信賴的證書。
IronPDF 中的哪個類別用於在 Java 中管理數位簽章?
IronPDF 中的 SignatureManager 類用於管理 Java 中的數位簽章。它允許您新增簽章,並從 PDF 文件中擷取現有的簽章。
在 Java 中使用 IronPDF 進行數位簽章還有哪些選項?
IronPDF for Java 提供了添加簽名圖片、指定簽名聯絡人、位置和原因,以及在數位簽名中添加手寫和數位化圖片的選項。
IronPDF for Java 有免費版本嗎?
IronPDF 為個人開發者提供免費試用,使用時可不加水印。商業用途則有授權選項可供選擇。
IronPDF for Java 有哪些進階功能?
IronPDF for Java 包含的功能包括文本和圖像提取、添加頁眉和頁腳、渲染圖表和圖形以及處理 PDF 表單。







