使用 Java 和 GroupDocs.Signature 在 PDF 上實現帶有時間戳記的數位簽名

介紹

在當今的數位世界中,驗證文件的真實性和完整性對各行各業都至關重要。本教學將指導您使用 GroupDocs.Signature for Java(一個強大的 Java 庫,可簡化此過程)在 PDF 文件上實現帶有時間戳的數位簽章。

數位簽章不僅可以驗證簽章者的身份,還能確保文件在簽章後保持不變。增加時間戳可以記錄簽名的生成時間,從而進一步增強安全性。遵循本指南,您將學習如何:

  • 為 Java 設定 GroupDocs.Signature
  • 在 PDF 上實現帶有時間戳記的數位簽名
  • 配置各種簽名設定並解決常見問題

讓我們深入研究如何有效利用這些功能。

先決條件

在開始之前,請確保滿足以下先決條件:

所需的庫和相依性:

  • GroupDocs.Signature for Java:我們將使用 23.12 版本。
  • Java 開發工具包 (JDK):請確保您的系統上安裝了 JDK。

環境設定:

  • 合適的 IDE,例如 IntelliJ IDEA 或 Eclipse
  • Maven 或 Gradle 建置工具

知識前提:

  • 對 Java 程式設計有基本的了解
  • 熟悉 PDF 文件結構

為 Java 設定 GroupDocs.Signature

若要使用 GroupDocs.Signature for Java,請透過 Maven、Gradle 或直接下載將該程式庫整合到您的專案中。

積分法:

Maven: 將此依賴項新增至您的 pom.xml 文件:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Gradle: 將其包含在您的 build.gradle 文件:

implementation 'com.groupdocs:groupdocs-signature:23.12'

直接下載: 訪問 GroupDocs.Signature Java 版本 下載最新版本。

許可證取得步驟:

  1. 免費試用: 首先從 GroupDocs 網站下載試用版。
  2. 臨時執照: 如果您需要不受限制地存取全部功能,請取得臨時許可證。
  3. 購買: 為了長期使用,請考慮購買許可證。

基本初始化和設定: 若要初始化 Java 版 GroupDocs.Signature,請建立一個 Signature 帶有 PDF 文件路徑的物件:

import com.groupdocs.signature.Signature;

String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
final Signature signature = new Signature(filePath);

實施指南

環境搭建好後,我們在PDF文件上實現帶有時間戳記的數位簽章。

功能:PDF 上的帶有時間戳記的數位簽名

概述: 此功能示範如何使用 GroupDocs.Signature for Java 將數位簽章套用至 PDF 文件。我們將添加來自外部服務的時間戳,以驗證文件的真實性和完整性。

逐步實施:

3.1 導入所需的類別:

首先導入必要的類別:

import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.enums.HorizontalAlignment;
import com.groupdocs.signature.domain.enums.VerticalAlignment;
import com.groupdocs.signature.domain.signatures.PdfDigitalSignature;
import com.groupdocs.signature.domain.structs.TimeStamp;
import com.groupdocs.signature.options.sign.DigitalSignOptions;
3.2 設定檔案路徑:

定義輸入 PDF、數位憑證和輸出檔案的路徑:

String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
String certificatePath = "YOUR_DOCUMENT_DIRECTORY/certificate.pfx";
String outputFilePath = "YOUR_OUTPUT_DIRECTORY/digitallySignedTimeStamp.pdf";
3.3 初始化簽名物件:

創建一個 Signature 具有輸入 PDF 路徑的物件:

final Signature signature = new Signature(filePath);
3.4 配置數位簽章和時間戳記:

設定數位簽章屬性並從外部服務分配時間戳記:

PdfDigitalSignature pdfDigitalSignature = new PdfDigitalSignature();
pdfDigitalSignature.setContactInfo("Contact Information");
pdfDigitalSignature.setLocation("Location Info");
pdfDigitalSignature.setReason("Signing Reason");

// 使用 URL、使用者 ID 和密碼設定時間戳
TimeStamp timeStamp = new TimeStamp("https://freetsa.org/tsr”, “使用者 ID”, “密碼”);
pdfDigitalSignature.setTimeStamp(timeStamp);
3.5 設定數位看板選項:

使用您的數位憑證設定簽章選項:

DigitalSignOptions options = new DigitalSignOptions(certificatePath);
options.setPassword("YourCertificatePassword"); // 證書密碼
options.setSignature(pdfDigitalSignature); // 附加 PdfDigitalSignature 對象

// 指定簽名對齊
options.setVerticalAlignment(VerticalAlignment.Bottom);
options.setHorizontalAlignment(HorizontalAlignment.Right);
3.6 簽署並儲存文件:

執行簽名流程並儲存簽名後的文件:

try {
    SignResult signResult = signature.sign(outputFilePath, options);
} catch (Exception e) {
    throw new RuntimeException("Error during signing process: " + e.getMessage());
}

故障排除提示:

  • 確保您的數位憑證有效且未過期。
  • 存取時間戳服務時驗證網路連線。
  • 檢查讀取/寫入檔案的檔案權限。

實際應用

在 PDF 上實現帶有時間戳記的數位簽章有許多實際應用,例如:

  1. 法律文件: 透過驗證簽名者的真實性來確保合約的合法性。
  2. 財務協議: 保護發票和協議等財務文件。
  3. 教育證書: 確保學歷證書的合法性。
  4. 軟體許可: 驗證軟體許可協議。
  5. 與企業系統整合: 與文件管理系統無縫整合。

性能考慮

使用 GroupDocs.Signature for Java 時,請考慮以下效能提示:

  • 如果可能的話,透過分塊處理大型文件來優化記憶體使用。
  • 分析您的應用程式以識別瓶頸並進行相應的最佳化。
  • 遵循 Java 記憶體管理的最佳實踐來提高效能。

結論

在本教程中,我們探討如何使用 GroupDocs.Signature for Java 在 PDF 上實作帶有時間戳記的數位簽章。按照上述步驟,您可以確保應用程式中文件的真實性和完整性。

如需進一步探索 GroupDocs.Signature 的功能,您可以嘗試其他功能,例如二維碼簽名或圖像印章。如果您遇到任何挑戰,請隨時聯繫社群論壇。

常見問題部分

1.什麼是數位簽章? 數位簽名是手寫簽名的電子形式,用於驗證文件的真實性和完整性。

2. 加入時間戳記如何增強安全性? 時間戳可以證明文件的簽署時間,從而避免有關簽名時間的爭議。

3. 我可以在商業專案中使用 GroupDocs.Signature for Java 嗎? 是的,您可以透過從 GroupDocs 取得許可將其用於商業用途。

4. PDF簽名過程中常見問題有哪些? 常見問題包括存取時間戳服務時的數位憑證無效和網路連線問題。

5.如何有效率地處理大型PDF文件? 考慮分塊處理文件或優化記憶體使用以有效管理資源。