Java와 GroupDocs.Metadata를 사용하여 OpenType 글꼴 서명 추출 방법
현대 애플리케이션에서 OpenType 글꼴 서명 데이터를 추출하는 것은 글꼴 진위 확인 및 디지털 자산 보호에 필수적입니다. 이 튜토리얼에서는 GroupDocs.Metadata for Java를 사용하여 OpenType 글꼴에서 서명 플래그와 전체 암호화 세부 정보를 단계별로 추출하는 방법을 보여줍니다. 보안 중심의 콘텐츠 파이프라인을 구축하든, 단순히 글꼴 라이브러리를 감사하든, 아래 기술을 통해 워크플로를 신뢰성 있게 빠르게 만들 수 있습니다.
빠른 답변
- 어떤 라이브러리가 필요합니까? GroupDocs.Metadata for Java (v24.12)
- 필요한 Java 버전은? JDK 8 이상
- 라이선스가 필요합니까? 평가용 무료 체험이 가능하며, 프로덕션에서는 정식 라이선스가 필요합니다
- 여러 글꼴을 처리할 수 있습니까? 예 – 배치 또는 동시 처리 지원
- 코드가 스레드‑안전합니까? 스레드당 새로운
Metadata인스턴스를 생성하세요; 객체 자체는 스레드‑안전하지 않습니다
OpenType 글꼴 서명이란?
OpenType 글꼴 서명은 글꼴에 삽입된 암호화 블록으로, 서명 이후 파일이 변경되지 않았음을 증명합니다. 서명 시간, 인증서 체인, 해시 알고리즘 식별자 및 선택적 폐기 정보가 포함됩니다. 또한 서명 알고리즘 식별자, 서명자의 인증서 체인 및 선택적 폐기 목록을 포함하여 글꼴 무결성과 출처를 포괄적으로 검증할 수 있습니다.
Java용 GroupDocs.Metadata를 사용하는 이유
GroupDocs.Metadata는 50개 이상의 입력 및 출력 형식(DOCX, PDF, PPTX, HTML 및 다양한 이미지 형식 포함)을 지원하며, 전체 파일을 메모리에 로드하지 않고도 OpenType 서명을 읽을 수 있어 수백 페이지에 달하는 글꼴 컬렉션을 효율적으로 처리할 수 있습니다.
사전 요구 사항
- Java Development Kit (JDK): 버전 8 이상.
- IDE: IntelliJ IDEA, Eclipse, VS Code 등 Java 호환 IDE.
- Maven: 의존성 관리를 위해 필요.
필요 라이브러리 및 종속성
pom.xml에 GroupDocs.Metadata Maven 좌표를 추가하세요. 이렇게 하면 예제에 필요한 정확한 패키지가 자동으로 다운로드됩니다.
<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 릴리스에서 다운로드하세요.
라이선스 획득
- 무료 체험: 기능을 탐색하려면 무료 체험을 시작하세요.
- 임시 라이선스: GroupDocs 라이선스 페이지에서 임시 라이선스를 얻을 수 있습니다.
- 구매: 프로덕션 사용을 위해 정식 라이선스를 구매하세요.
GroupDocs.Metadata를 사용하여 OpenType 글꼴 서명 추출 방법
Metadata 클래스는 전체 파일을 로드하지 않고 문서 메타데이터에 접근할 수 있는 GroupDocs.Metadata의 핵심 API입니다.
글꼴 서명을 읽으려면 .otf 파일 경로로 Metadata 객체를 생성한 뒤 DigitalSignaturePackage에 접근하면 됩니다. 이 방식은 필요한 메타데이터 구조만 로드하므로 전체 글꼴 파싱을 피하고 메모리 사용량을 최소화합니다. Metadata 인스턴스는 try‑with‑resources 블록 내에서 사용하여 적절히 해제되도록 해야 합니다.
new Metadata("font.otf") 로 글꼴 파일을 로드하고 try‑with‑resources 블록 안에서 사용하세요. Metadata 클래스는 OpenType 글꼴을 포함한 모든 지원 문서 유형을 읽는 진입점이며, 객체는 자동으로 닫혀 리소스 누수를 방지합니다.
디지털 서명 플래그 추출 방법
DigitalSignaturePackage 객체는 글꼴에 대한 모든 서명 관련 정보를 집계하며, 플래그와 개별 서명을 포함합니다.
직접 답변: 글꼴을 연 후 metadata.getDigitalSignaturePackage().getFlags() 를 호출하세요; 반환된 플래그 집합은 서명이 유효한지, 폐기되었는지, 특수 조건이 있는지를 알려줍니다. 이 한 번의 호출로 상세 내용에 들어가기 전에 빠른 상태 검사를 할 수 있습니다. 플래그는 열거형으로 표시되어 서명 상태, 타임스탬프 존재 여부 및 서명 시 적용된 정책 제약을 판단할 수 있습니다.
- 글꼴 파일을 가리키는
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객체가 자동으로 닫히도록 보장하여 메모리 누수를 방지합니다.
상세 디지털 서명 정보 추출 방법
CmsSignature 은 글꼴에 삽입된 개별 CMS/PKCS#7 서명을 나타내며, 해당 서명의 암호화 속성에 접근할 수 있게 해줍니다.
직접 답변: metadata.getDigitalSignaturePackage().getSignatures() 를 반복하세요; 각 CmsSignature 객체는 서명 시간, 다이제스트 알고리즘, 캡슐화된 콘텐츠 및 인증서 세부 정보를 제공하므로 전체 감사 보고서를 작성할 수 있습니다. 각 서명에 대해 서명자의 인증서 체인을 가져오고, 해시 알고리즘을 검증하며, 타임스탬프 토큰을 추출해 서명이 적용된 시점을 확인할 수 있습니다.
- 위와 동일한
Metadata초기화를 재사용합니다. - 패키지 내 각
CmsSignature를 순회합니다. getSignTime(),getDigestAlgorithms(),getCertificates(),getSignerInfo()와 같은 속성을 추출합니다.
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());
}
}
}
}
}
핵심 섹션 설명
- Sign Time: 서명이 적용된 타임스탬프.
- Digest Algorithms & OIDs: 사용된 해시 알고리즘(e.g., SHA‑256).
- Encapsulated Content: 서명 내부에 포함된 추가 데이터.
- Certificates: 유효 기간 및 원시 데이터 크기를 통해 서명자 신원을 검증.
- Signers: 각 서명자의 알고리즘 선택 및 서명 타임스탬프 제공.
문제 해결 팁
- 글꼴에 디지털 서명이 없으면
getDigitalSignaturePackage()가null을 반환합니다. 플래그나 서명에 접근하기 전에 항상null여부를 확인하세요. - Maven 의존성에 정의된 GroupDocs.Metadata 버전과 동일한 버전을 사용하여 호환성 문제를 방지하세요.
실용적인 적용 사례
OpenType 글꼴 서명을 추출하는 것은 다양한 실제 시나리오에서 유용합니다:
- 문서 검증: 콘텐츠 관리 시스템에서 서명된 글꼴 파일을 자동으로 검사합니다.
- 디지털 자산 관리: 브랜드 프로젝트에 배포하기 전에 글꼴 진위를 검증합니다.
- 보안 감사: 서명 세부 정보를 검토하여 내부 보안 정책 준수를 확인합니다.
성능 고려 사항
- 리소스 관리:
Metadata객체를 즉시 닫기 위해 try‑with‑resources 를 사용하세요. - 배치 처리: I/O 오버헤드를 최소화하기 위해 글꼴을 그룹으로 처리합니다; GroupDocs.Metadata는 전체 글꼴을 메모리에 로드하지 않고도 수천 개 파일을 처리할 수 있습니다.
- 동시성: 대규모 작업에서는 별도의
Metadata인스턴스를 병렬 스레드에서 실행합니다; 라이브러리는 인스턴스당 스레드‑안전하지 않으므로 각 스레드에 인스턴스를 별도로 배치하세요.
자주 묻는 질문
Q: 디지털 서명이 없는 글꼴에서도 서명을 추출할 수 있나요?
A: DigitalSignaturePackage 가 null 이 되므로, 플래그나 세부 정보를 접근하기 전에 항상 이 조건을 확인해야 합니다.
Q: 필요한 GroupDocs.Metadata 버전은 어느 것인가요?
A: 예제는 24.12 버전을 목표로 하지만, 최신 릴리스도 OpenType 글꼴에 대해 하위 호환성을 유지합니다.
Q: 서명을 읽기 위해 특별한 라이선스가 필요합니까?
A: 평가용 체험 라이선스로도 가능하지만, 프로덕션 사용 시 정식 라이선스가 필요합니다.
Q: 클라우드 버킷에 저장된 글꼴을 어떻게 처리하나요?
A: 글꼴을 임시 로컬 파일로 다운로드한 뒤 해당 경로를 Metadata 에 전달하면 됩니다. 라이브러리는 로컬 경로에 접근 가능한 모든 파일을 지원합니다.
Q: 서명의 암호학적 유효성을 검증할 수 있나요?
A: GroupDocs.Metadata는 원시 서명 데이터를 제공하므로, 인증서 체인과 해시 값을 별도의 암호화 라이브러리에 전달해 전체 검증을 수행할 수 있습니다.
결론
이 가이드를 따라 Java용 GroupDocs.Metadata를 사용해 OpenType 글꼴 서명 정보와 상세 디지털 서명 데이터를 추출하는 방법을 이제 알게 되었습니다. 이러한 단계를 애플리케이션에 통합하면 문서 보안을 강화하고 자산 검증을 효율화하며 규정 준수 이니셔티브를 지원할 수 있습니다.
다음 단계
- 대규모 글꼴 라이브러리를 효율적으로 처리하기 위해 배치 처리를 실험해 보세요.
- 추출된 데이터를 보안 감사 도구와 결합해 자동화된 규정 준수 보고서를 생성하세요.
- 필요에 따라 서명을 편집하거나 제거하는 등 GroupDocs.Metadata의 다른 메타데이터 기능도 탐색해 보세요.
마지막 업데이트: 2026-06-22
테스트 환경: GroupDocs.Metadata 24.12
작성자: GroupDocs