1. 程式人生 > 其它 >Java 獲取PDF數字簽名證書資訊

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—