Java 獲取PDF數字簽名證書資訊
PDF文檔中可添加數字簽名,在添加簽名前,需要準備可信任簽名證書。對文檔中已有的簽名,可驗證書籤是否有效。也可通過一定方法來獲取數字簽名或者簽名證書資訊。下面以Java程式碼示例展示如何讀取簽名的證書資訊。本文將分為兩個部分介紹,即編輯程式碼前的環境配置和具體的程式碼示例。
一、環境配置
IntelliJ IDEA (jdk 1.8.0)
包含簽名的PDF測試文檔
Java PDF庫:Free Spire.PDF for Java
導入Java庫的方法如下:
1.手動導入。
下載庫到本地,解壓,找到lib文件下的jar文件。然後執行如下圖方法手動導入:
二、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—