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—