Cách Trích Xuất Chữ Ký từ Phông chữ OpenType trong Java với GroupDocs.Metadata
Giới thiệu
Trong thời đại kỹ thuật số ngày nay, cách trích xuất chữ ký từ các tệp phông chữ là một yêu cầu phổ biến đối với các nhà phát triển cần xác minh tính xác thực và duy trì tính toàn vẹn. Hướng dẫn này sẽ chỉ cho bạn cách trích xuất các cờ chữ ký số và dữ liệu chữ ký chi tiết từ phông chữ OpenType bằng **Group Dù bạn đang xây dựng một hệ thống quản lý tài liệu, một ứng dụng tập trung vào bảo mật, hay chỉ cần kiểm tra tài sản phông chữ, việc nắm vững quy trình này sẽ giúp quy trình làm việc của bạn trở nên đáng tin cậy và an toàn hơn.
Bạn sẽ học được
- Cách trích xuất các cờ chữ ký số từ phông chữ OpenType
- Cách lấy thông tin chi tiết về mỗi chữ ký số
- Cách thiết lập và sử dụng GroupDocs.Metadata trong dự án Java
Hãy cùng khám phá các yêu cầu trước và chuẩn bị môi trường của bạn.
Câu trả lời nhanh
- Thư viện tôi cần gì? GroupDocs.Metadata for Java (v24.12)
- Yêu cầu phiên bản Java nào? JDK 8 hoặc mới hơn
- Có cần giấy phép không? Bản dùng thử miễn phí đủ cho việc đánh giá; giấy phép đầy đủ cần thiết cho môi trường sản xuất
- Có thể xử lý nhiều phông chữ cùng lúc không? Có – sử dụng xử lý batch hoặc đồng thời cho tập hợp lớn
- Mã có an toàn với đa luồng không? Đối tượng
Metadatalà disposable; tạo một thể hiện mới cho mỗi luồng
Các yêu cầu trước
Trước khi trích xuất dữ liệu chữ ký số, hãy chắc chắn rằng môi trường của bạn đáp ứng các yêu cầu sau:
Thư viện và phụ thuộc cần thiết
Để làm việc với GroupDocs.Metadata for Java, hãy thêm kho Maven và phụ thuộc như dưới đây.
Yêu cầu thiết lập môi trường
- Bộ công cụ phát triển Java (JDK): Cài đặt JDK 8 hoặc mới hơn.
- IDE: Bất kỳ IDE nào hỗ trợ Java (IntelliJ IDEA, Eclipse, VS Code, v.v.).
Kiến thức nền tảng
Hiểu biết cơ bản về Java và các khái niệm chữ ký số sẽ hữu ích, nhưng hướng dẫn này cũng cung cấp các giải thích rõ ràng cho người mới bắt đầu.
Cài đặt GroupDocs.Metadata cho Java
Cài đặt qua Maven
Thêm cấu hình sau vào tệp pom.xml của bạn. Điều này sẽ tải gói groupdocs metadata java cần thiết cho các ví dụ.
<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>
Tải trực tiếp
Hoặc, tải phiên bản mới nhất từ GroupDocs.Metadata for Java releases.
Nhận giấy phép
- Dùng thử miễn phí: Bắt đầu với bản dùng thử để khám phá các tính năng.
- Giấy phép tạm thời: Nhận giấy phép tạm thời nếu cần bằng cách truy cập trang giấy phép GroupDocs.
- Mua bản đầy đủ: Để có quyền truy cập toàn bộ, hãy cân nhắc mua giấy phép.
Sau khi cài đặt thư viện và có giấy phép, bạn có thể bắt đầu trích xuất chữ ký.
Chữ ký số trong phông chữ OpenType là gì?
Một chữ ký số được nhúng trong phông chữ OpenType đảm bảo rằng tệp phông chữ không bị thay đổi kể từ khi được ký. Chữ ký bao gồm thông tin mật mã như thời gian ký, chứng chỉ và thuật toán băm, mà bạn có thể đọc một cách lập trình bằng GroupDocs.Metadata.
Cách trích xuất các cờ chữ ký số
Tổng quan
Việc trích xuất các cờ chữ ký số cho phép bạn nhanh chóng xác định trạng thái và thuộc tính của một chữ ký (ví dụ: hợp lệ, bị thu hồi, hoặc có các điều kiện đặc biệt).
Các bước thực hiện
- Khởi tạo Metadata: Tạo một thể hiện
Metadatatrỏ tới tệp phông chữ của bạn. - Đọc các cờ: Truy cập
DigitalSignaturePackagevà in ra các cờ của nó.
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());
}
}
Giải thích
documentPath– đường dẫn tuyệt đối hoặc tương đối tới phông chữ OpenType.- Khối
try‑with‑resourcesđảm bảo đối tượngMetadatađược đóng tự động, ngăn ngừa rò rỉ tài nguyên.
Cách trích xuất thông tin chi tiết của chữ ký số
Tổng quan
Ngoài các cờ, bạn thường cần kiểm tra siêu dữ liệu của từng chữ ký — thời gian ký, thuật toán, chứng chỉ và nội dung được đóng gói.
Các bước thực hiện
- Khởi tạo Metadata (giống như trên).
- Duyệt qua các chữ ký: Đối với mỗi
CmsSignature, in ra các thuộc tính liên quan.
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());
}
}
}
}
}
Giải thích các phần quan trọng
- Sign Time: Thời điểm chữ ký được áp dụng.
- Digest Algorithms & OIDs: Các thuật toán băm được sử dụng (ví dụ: SHA‑256).
- Encapsulated Content: Bất kỳ dữ liệu bổ sung nào được bao bọc trong chữ ký.
- Certificates: Ngày hiệu lực và kích thước dữ liệu thô giúp xác minh danh tính người ký.
- Signers: Cung cấp lựa chọn thuật toán và thời gian ký của mỗi người ký.
Mẹo khắc phục sự cố
- Đảm bảo phông chữ thực sự chứa chữ ký số; nếu không
getDigitalSignaturePackage()sẽ trả về ` - Kiểm tra bạn đang sử dụng cùng phiên bản GroupDocs.Metadata như trong phụ thuộc Maven để tránh các vấn đề tương thích.
Ứng dụng thực tiễn
Việc trích xuất dữ liệu chữ ký số từ phông chữ OpenType hữu ích trong nhiều tình huống:
- Xác liệu: Tự động kiểm tra các tệp phông chữ đã ký trong hệ thống quản lý nội dung.
- Quản lý tài sản kỹ thuật số: Xác thực tính xác thực của phông chữ trước khi triển khai trong các dự án thương hiệu.
- Kiểm toán bảo mật: Xem xét chi tiết chữ ký để đảm bảo tuân thủ các chính sách bảo mật nội bộ.
Các lưu ý về hiệu năng
- Quản lý tài nguyên: Luôn sử dụng
try‑with‑resourcesđể đóng đối tượngMetadatakịp thời. - Xử lý batch: Khi làm việc với nhiều phông chữ, xử lý chúng theo lô để giảm tải I/O.
- ồng thời: Đối với khối lượng công việc lớn, chạy các thể hiện
Metadatariêng biệt trong các luồng song song; thư viện không an toàn với đa luồng cho mỗi thể hiện.
Câu hỏi thường gặp
H: Tôi có thể trích xuất chữ ký từ phông chữ không có chữ ký số không?
Đ: DigitalSignaturePackage sẽ trả về null; bạn nên kiểm tra điều kiện này trước khi truy cập các cờ hoặc chi tiết.
**H: Phiên bản GroupDocs.Metadata nào là bắt buộc?12, nhưng các phiên bản mới hơn vẫn tương cho việc đánh giá; giấy phép đầy đủ cần thiết cho môi trường sản xuất.
H: Làm sao xử lý phông chữ lưu trong bucket đám mây?
Đ: Tải phông chữ về một tệp tạm thời cục bộ, sau đó truyền đường dẫn của nó cho Metadata. Thư viện làm việc với bất kỳ tệp nào có thể truy cập qua đường dẫn cục bộ.
H: Có thể xác minh tính hợp lệ mật mã của chữ ký không?
Đ: GroupDocs.Metadata cung cấp dữ liệu thô; bạn có xác thựcBước tiếp theo
- Thử nghiệm xử lý batch để quản lý thư viện phông chữ lớn.
- Kết hợp dữ liệu đã, chẳng hạn như chỉnh sửa hoặc xóa chữ ký khi cần.
Cập nhật lần cuối: 2026-01-24
Đã kiểm tra với: GroupDocs.Metadata 24.12
Tác giả: GroupDocs