PDF文檔中可添加數字簽名,在添加簽名前,需要准備可信任簽名證書。對文檔中已有的簽名,可驗證書簽是否有效。也可通過一定方法來獲取數字簽名或者簽名證書信息。下面以Java代碼示例展示如何讀取簽名的證書信息。本文將分為兩個部分介紹,即編輯代碼前的環境配置和具體的代碼示例。
一、環境配置
IntelliJ IDEA (jdk 1.8.0)
包含簽名的PDF測試文檔
Java PDF庫:Free Spire.PDF for Java
導入Java庫的方法如下:
1.手動導入。
下載庫到本地,解壓,找到lib文件下的jar文件。然后執行如下圖方法手動導入:
在pom.xml文件中配置如下內容:
<repositories> <repository> <id>com.e-iceblue</id> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>4.4.1</version> </dependency> </dependencies>
二、Java代碼示例
代碼方法主要分為以下幾個主要步驟來讀取:
1. 實例化PdfDocument類的對象。
2. 調用PdfDocument.loadFromFile()方法加載指定路徑下的已簽名的PDF文檔。
3. 通過PdfFormWidget. getFieldsWidget()方法獲取PdfFormFieldWidgetCollection類的域集合。
4. for循環文檔中的域,判斷獲取的域是否為簽名域。如果判定結果為true,則獲取文檔中的所有PdfSignatureFieldWidget類的簽名域。
5. 最后,調用PdfSignatureFieldWidget.getSignature().getCertificate()方法獲取簽名的證書信息。
import com.spire.pdf.*; import com.spire.pdf.widget.PdfFormFieldWidgetCollection; import com.spire.pdf.widget.PdfFormWidget; import com.spire.pdf.widget.PdfSignatureFieldWidget; public class GetCertificateInfo { public static void main(String[] args) { //實例化PdfDocument類的對象,並加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("AddSignature.pdf"); //獲取域集合 PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.getForm(); PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.getFieldsWidget(); //遍歷域 for (int i = 0; i < pdfFormFieldWidgetCollection.getCount(); i++) { //判定是否為簽名域 if (pdfFormFieldWidgetCollection.get(i) instanceof PdfSignatureFieldWidget) { //獲取簽名域 PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget) pdfFormFieldWidgetCollection.get(i); //獲取簽名證書信息 String certificateInfo = signatureFieldWidget.getSignature().getCertificate().toString(); System.out.println(certificateInfo); } } } }
執行程序后的讀取的證書信息結果:
—End—