Java 獲取PDF數字簽名證照資訊

iceblue發表於2021-11-19

PDF文件中可新增數字簽名,在新增簽名前,需要準備可信任簽名證照。對文件中已有的簽名,可驗證照籤是否有效。也可通過一定方法來獲取數字簽名或者簽名證照資訊。下面以Java程式碼示例展示如何讀取簽名的證照資訊。本文將分為兩個部分介紹,即編輯程式碼前的環境配置和具體的程式碼示例。

一、環境配置

  • IntelliJ IDEA (jdk 1.8.0)

  • 包含簽名的PDF測試文件

  • Java PDF庫:Free Spire.PDF for Java

匯入Java庫的方法如下:

1. 手動匯入。

下載庫到本地,解壓,找到lib檔案下的jar檔案。然後執行如下圖方法手動匯入:


2.Maven 倉庫下載匯入。

在pom.xml檔案中配置如下內容:

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <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—


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499788/viewspace-2842641/,如需轉載,請註明出處,否則將追究法律責任。

相關文章