如何在 Java 中使用 GroupDocs.Metadata 從 OpenType 字型提取簽章
介紹
在當今的數位時代,如何提取簽章資訊是需要驗證真偽與維持完整性的開發者常見需求。本教學將帶您使用 GroupDocs.Metadata for Java 從 OpenType 字型中提取數位簽章旗標與詳細簽章資料。稽核字型資產,掌握此流程都能讓您的工作流程物一次取數位簽章資料之前,請確保您的環境符合以下需求:
必 環境設定需求
- Java Development Kit (JDK): 安裝 JDK 8 或更新版本。
- IDE: 任意支援 Java 的開發環境 (IntelliJ IDEA、Eclipse、VS Code 等)。
知識前置條件
具備基本的 Java簽章的概念會比較順利,但本指南亦提供新手友善的說明。
設定 GroupDocs.Metadata for Java
Maven 安裝
將以下設定加入您的 pom.xml 檔案,即可取得範例所需的 groupdocs metadata java 套件。
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/metadata/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>24.12</version>
</dependency>
</dependencies>
直接下載
或是直接從 GroupDocs.Metadata for Java releases 下載最新版本。
授權取得
- 免費試用: 先取得免費試用版以探索功能。
- 臨時授權: 如有需要,可前往 GroupDocs licensing page 取得臨時授權。
- 購買授權: 若需完整功能,建議購買正式授權。
安裝函式庫並取得授權後,即可開始提取簽章。
OpenType 字型中的數位簽章是什麼?
嵌入於 OpenType 字型的數位簽章可保證字型檔案自簽署以來未被更改。簽章內含簽署時間、憑證與雜湊演算法等加密資訊,您可使用 GroupDocs.Metadata 以程式方式讀取。
如何提取數位簽章旗標
概觀
提取數位簽章旗標可快速辨識簽章的狀態與屬性(例如是否有效、是否撤銷或是否具特殊條件)。
實作步驟
- 初始化 Metadata: 建立指向字型檔案的
Metadata實例。 - 讀取旗標: 取得
DigitalSignaturePackage並列印其旗標。
String documentPath = "YOUR_DOCUMENT_DIRECTORY"; // Replace with your input file path
try (Metadata metadata = new Metadata(documentPath)) {
OpenTypeRootPackage root = metadata.getRootPackageGeneric();
if (root.getDigitalSignaturePackage() != null) {
System.out.println(root.getDigitalSignaturePackage().getFlags());
}
}
說明
documentPath– OpenType 字型的絕對或相對路徑。try‑with‑resources區塊會自動關閉Metadata物件,避免資源泄漏。
如何提取詳細的數位簽章資訊
概觀
除了旗標外,您通常還需要檢視每筆簽章的中繼資料——簽署時間、演算法、憑證與封裝內容等。
實作步驟
- 初始化 Metadata(同上)。
- 遍歷簽章: 針對每個
CmsSignature,列印相關屬性。
String documentPath = "YOUR_DOCUMENT_DIRECTORY"; // Replace with your input file path
try (Metadata metadata = new Metadata(documentPath)) {
OpenTypeRootPackage root = metadata.getRootPackageGeneric();
if (root.getDigitalSignaturePackage() != null) {
for (CmsSignature signature : root.getDigitalSignaturePackage().getSignatures()) {
System.out.println(signature.getSignTime());
if (signature.getDigestAlgorithms() != null) {
for (com.groupdocs.metadata.core.Oid signatureDigestAlgorithm : signature.getDigestAlgorithms()) {
printOid(signatureDigestAlgorithm);
}
}
if (signature.getEncapsulatedContent() != null) {
System.out.println(signature.getEncapsulatedContent().getContentType());
System.out.println(signature.getEncapsulatedContent().getContentRawData().length);
}
if (signature.getCertificates() != null) {
for (com.groupdocs.metadata.core.CmsCertificate certificate : signature.getCertificates()) {
System.out.println(certificate.getNotAfter());
System.out.println(certificate.getNotBefore());
System.out.println(certificate.getRawData().length);
}
}
if (signature.getSigners() != null) {
for (com.groupdocs.metadata.core.CmsSigner signerInfoEntry : signature.getSigners()) {
System.out.println(signerInfoEntry.getSignatureValue());
printOid(signerInfoEntry.getDigestAlgorithm());
printOid(signerInfoEntry.getSignatureAlgorithm());
System.out.println(signerInfoEntry.getSigningTime());
}
}
}
}
}
關鍵段落說明
- 簽署時間: 簽章被套用的時間。
- 摘要演算法與 OID: 使用的雜湊演算法(例如 SHA‑256)。
- 封裝內容: 簽章內部封裝的任何額外資料。
- 憑證: 有效日期與原始資料大小有助於驗證簽署者身份。
- 簽署者: 提供每位簽署者的演算法選擇與簽署時間戳記。
疑難排解技巧
- 確保字型實際包含數位簽章;否則
getDigitalSignaturePackage()會回傳null。 - 確認使用的 GroupDocs.Metadata 版本與 Maven 依賴中顯示的相同,以避免相容性問題。
實務應用
從 OpenType 字型提取數位簽章資料在多種情境下都很有用:
- 文件驗證: 在內容管理系統中自動檢查已簽署的字型檔案。
- 數位資產管理: 在品牌專案部署前驗證字型真偽。
- 安全稽核: 檢閱簽章細節以確保符合內部安全政策。
效能考量
- 資源管理: 始終使用
try‑with‑resources及時關閉Metadata物件。 - 批次處理: 處理大量字型時,分批執行以降低 I/O 開銷。
- 平行執行: 大規模工作負載時,可在平行執行緒中各自建立
Metadata實例;單一實例本身並非執行緒安全。
常見問答
Q: 可以從沒有數位簽章的字型提取簽章嗎?
A: DigitalSignaturePackage 會是 null;在存取旗標或細節前請先檢查此情況。
Q: 需要哪個版本的 GroupDocs.Metadata?
A: 範例使用 24.12 版,較新版本亦相容於 OpenType 字型。
Q: 讀取簽章需要特別授權嗎?
A: 試用授權可用於評估;正式環境需購買完整授權。
Q: 若字型存放在雲端儲存桶,該如何處理?
A: 先將字型下載至暫存本機檔案,然後將其路徑傳給 Metadata。函式庫支援任何可透過本機路徑存取的檔案。
Q: 能否驗證簽章的加密有效性?
A: GroupDocs.Metadata 只提供原始資料;您可將憑證鏈與雜湊值交給其他加密函式庫,以完成完整的驗證。
結論
透過本指南,您已瞭解 如何提取簽章 資訊與 OpenType 字型的詳細數位簽章資料,並能使用 GroupDocs.Metadata for Java 將此技術整合至應用程式中。此技巧可提升文件安全性、簡化資產驗證 將提取的資料與安全稽核工具結合,- 探索 GroupDocs.Metadata 的其他元資料功能,例如在適當情況下編輯或移除簽章。
最後更新: 2026-01-24
測試版本: GroupDocs.Metadata 24.12
作者: GroupDocs