如何在 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>
-
另一個必須的依賴項是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 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>");
PDF文件已建立,但尚未保存。 因此,下一步是建立數位簽章並將其新增到這個PDF文件中,然後最終保存它。
建立數位簽名
您需要使用Adobe Reader建立一個數位簽名憑證,這將在Java程式碼中用於利用這些細節對PDF文件進行數位簽名。 您可以查看如何在Adobe Reader中建立數位簽名。
打開Adobe Reader,然後點擊編輯 > 偏好設定。 然後點擊簽名和更多致別資訊和受信任證書。
專案偏好設定
新增以下簽名欄位以生成.pfx或.p12文件doc。
新增數位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](/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);
保存PDF簽章文件
最後,讓我們保存PDF文件;否則使用PdfDocument類簽章的PDF不會被保存。 程式碼很簡單,如下所示:
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類,幫助使用者新增憑證並使用簽章欄位簽署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表單。





