Jak wyodrębnić podpis czcionki OpenType w Javie przy użyciu GroupDocs.Metadata

W nowoczesnych aplikacjach wyodrębnianie danych podpisu czcionki OpenType jest niezbędne do potwierdzania autentyczności czcionki i ochrony Twoich zasobów cyfrowych. Ten samouczek pokazuje krok po kroku, jak pobrać zarówno flagi podpisu, jak i pełne szczegóły kryptograficzne z czcionki OpenType przy użyciu GroupDocs.Metadata for Java. Niezależnie od tego, czy budujesz pipeline treści skoncentrowany na bezpieczeństwie, czy po prostu potrzebujesz audytu biblioteki czcionek, poniższe techniki uczynią Twój przepływ pracy niezawodnym i szybkim.

Szybkie odpowiedzi

  • Jakiej biblioteki potrzebuję? GroupDocs.Metadata for Java (v24.12)
  • Jaka wersja Javy jest wymagana? JDK 8 lub nowsza
  • Czy potrzebna jest licencja? Darmowa wersja próbna wystarczy do oceny; pełna licencja jest wymagana w produkcji
  • Czy mogę przetwarzać wiele czcionek? Tak – obsługiwane jest przetwarzanie wsadowe lub równoległe
  • Czy kod jest bezpieczny wątkowo? Utwórz nową instancję Metadata dla każdego wątku; sam obiekt nie jest bezpieczny wątkowo

Czym jest podpis czcionki OpenType?

Podpis czcionki OpenType to kryptograficzny blok osadzony w czcionce, który potwierdza, że plik nie został zmieniony od momentu podpisania. Zawiera czas podpisania, łańcuch certyfikatów, identyfikatory algorytmów skrótu oraz opcjonalne informacje o odwołaniu. Zawiera także identyfikator algorytmu podpisu, łańcuch certyfikatów podpisującego oraz opcjonalne listy odwołań, umożliwiając kompleksową weryfikację integralności i pochodzenia czcionki.

Dlaczego używać GroupDocs.Metadata dla Javy?

GroupDocs.Metadata obsługuje ponad 50 formatów wejściowych i wyjściowych (w tym DOCX, PDF, PPTX, HTML oraz liczne typy obrazów) i potrafi odczytywać podpisy OpenType bez ładowania całego pliku do pamięci, co pozwala efektywnie przetwarzać kolekcje czcionek liczące setki stron.

Wymagania wstępne

  • Java Development Kit (JDK): Wersja 8 lub nowsza.
  • IDE: Dowolne IDE kompatybilne z Javą (IntelliJ IDEA, Eclipse, VS Code, itp.).
  • Maven: Do zarządzania zależnościami.

Wymagane biblioteki i zależności

Dodaj współrzędne Maven GroupDocs.Metadata do swojego pom.xml. Spowoduje to pobranie dokładnego pakietu potrzebnego do przykładów.

<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>

Bezpośrednie pobranie

Alternatywnie pobierz najnowszą wersję z GroupDocs.Metadata for Java releases.

Uzyskanie licencji

  • Darmowa wersja próbna: Rozpocznij od darmowej wersji próbnej, aby wypróbować funkcje.
  • Licencja tymczasowa: Uzyskaj tymczasową licencję poprzez stronę licencjonowania GroupDocs.
  • Zakup: Do użytku produkcyjnego kup pełną licencję.

Jak wyodrębnić podpis czcionki OpenType przy użyciu GroupDocs.Metadata

Klasa Metadata jest podstawowym API GroupDocs.Metadata do uzyskiwania metadanych dokumentu bez ładowania całego pliku.
Aby odczytać podpis czcionki, utwórz obiekt Metadata z ścieżką do pliku .otf, a następnie uzyskaj dostęp do jego DigitalSignaturePackage. To podejście ładuje tylko niezbędne struktury metadanych, unikając pełnego parsowania czcionki i utrzymując niskie zużycie pamięci. Instancję Metadata należy używać w bloku try‑with‑resources, aby zapewnić prawidłowe zwolnienie zasobów.

Załaduj plik czcionki przy użyciu new Metadata("font.otf") wewnątrz bloku try‑with‑resources. Klasa Metadata jest punktem wejścia GroupDocs.Metadata do odczytu dowolnego obsługiwanego typu dokumentu, w tym czcionek OpenType. Obiekt zamyka się automatycznie, zapobiegając wyciekom zasobów.

Jak wyodrębnić flagi podpisu cyfrowego

Obiekt DigitalSignaturePackage zbiera wszystkie informacje związane z podpisem czcionki, w tym flagi i poszczególne podpisy.
Bezpośrednia odpowiedź: Wywołaj metadata.getDigitalSignaturePackage().getFlags() po otwarciu czcionki; zwrócony zestaw flag informuje, czy podpis jest ważny, odwołany lub ma specjalne warunki. To pojedyncze wywołanie daje szybki przegląd stanu przed zagłębieniem się w szczegóły. Flagi są reprezentowane jako wyliczenie, które można sprawdzić, aby określić status podpisu, obecność znacznika czasu i ewentualne ograniczenia polityki zastosowane podczas podpisywania.

  1. Zainicjalizuj instancję Metadata wskazującą na plik czcionki.
  2. Pobierz DigitalSignaturePackage.
  3. Wydrukuj lub zaloguj wartości flag.
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());
    }
}

Wyjaśnienie

  • documentPath – absolutna lub względna ścieżka do czcionki OpenType.
  • Blok try‑with‑resources zapewnia automatyczne zamknięcie obiektu Metadata, zapobiegając wyciekom pamięci.

Jak wyodrębnić szczegółowe informacje o podpisie cyfrowym

CmsSignature reprezentuje pojedynczy podpis CMS/PKCS#7 osadzony w czcionce, zapewniając dostęp do jej właściwości kryptograficznych.
Bezpośrednia odpowiedź: Iteruj po metadata.getDigitalSignaturePackage().getSignatures(); każdy obiekt CmsSignature udostępnia czas podpisania, algorytmy skrótu, zawartość enkapsulowaną oraz szczegóły certyfikatu, co pozwala stworzyć pełny raport audytu. Dla każdego podpisu możesz pobrać łańcuch certyfikatów podpisującego, zweryfikować algorytm skrótu i wyodrębnić tokeny znacznika czasu, aby potwierdzić, kiedy podpis został zastosowany.

  1. Ponownie użyj tej samej inicjalizacji Metadata jak powyżej.
  2. Przejdź pętlą przez każdy CmsSignature w pakiecie.
  3. Wyodrębnij właściwości takie jak getSignTime(), getDigestAlgorithms(), getCertificates() oraz 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());
                }
            }
        }
    }
}

Wyjaśnienie kluczowych sekcji

  • Sign Time: Znacznik czasu, kiedy podpis został zastosowany.
  • Digest Algorithms & OIDs: Użyte algorytmy skrótu (np. SHA‑256).
  • Encapsulated Content: Dodatkowe dane zawarte w podpisie.
  • Certificates: Daty ważności i rozmiar danych surowych pomagają zweryfikować tożsamość podpisującego.
  • Signers: Dostarcza wybory algorytmów każdego podpisującego oraz czasy podpisania.

Wskazówki rozwiązywania problemów

  • Jeśli czcionka nie posiada podpisu cyfrowego, getDigitalSignaturePackage() zwraca null. Zawsze sprawdzaj null przed dostępem do flag lub podpisów.
  • Upewnij się, że używasz tej samej wersji GroupDocs.Metadata, co określono w zależności Maven, aby uniknąć problemów z kompatybilnością.

Praktyczne zastosowania

Wyodrębnianie podpisów czcionek OpenType jest przydatne w wielu rzeczywistych scenariuszach:

  1. Weryfikacja dokumentów: Automatyzuj sprawdzanie podpisanych plików czcionek w systemie zarządzania treścią.
  2. Zarządzanie zasobami cyfrowymi: Waliduj autentyczność czcionek przed ich wdrożeniem w projektach brandingowych.
  3. Audyty bezpieczeństwa: Przeglądaj szczegóły podpisu, aby zapewnić zgodność z wewnętrznymi politykami bezpieczeństwa.

Rozważania dotyczące wydajności

  • Zarządzanie zasobami: Używaj try‑with‑resources, aby szybko zamykać obiekty Metadata.
  • Przetwarzanie wsadowe: Przetwarzaj czcionki w grupach, aby zminimalizować narzut I/O; GroupDocs.Metadata może obsłużyć tysiące plików bez ładowania całej czcionki do pamięci.
  • Równoległość: Uruchamiaj oddzielne instancje Metadata w równoległych wątkach dla dużych obciążeń; biblioteka nie jest bezpieczna wątkowo na poziomie jednej instancji, więc izoluj każdą instancję w osobnym wątku.

Najczęściej zadawane pytania

Q: Czy mogę wyodrębnić podpisy z czcionki, która nie ma podpisu cyfrowego?
A: DigitalSignaturePackage będzie null; zawsze sprawdzaj ten warunek przed dostępem do flag lub szczegółów.

Q: Jakiej wersji GroupDocs.Metadata potrzebuję?
A: Przykłady dotyczą wersji 24.12, ale nowsze wydania pozostają kompatybilne wstecz dla czcionek OpenType.

Q: Czy potrzebuję specjalnej licencji, aby odczytywać podpisy?
A: Licencja próbna działa do oceny; pełna licencja jest wymagana w środowisku produkcyjnym.

Q: Jak obsłużyć czcionki przechowywane w chmurze?
A: Pobierz czcionkę do tymczasowego pliku lokalnego, a następnie przekaż jej ścieżkę do Metadata. Biblioteka działa z każdym plikiem dostępnym przez lokalną ścieżkę.

Q: Czy można zweryfikować kryptograficzną ważność podpisu?
A: GroupDocs.Metadata dostarcza surowe dane podpisu; możesz przekazać łańcuch certyfikatów i wartości skrótu do osobnej biblioteki kryptograficznej, aby wykonać pełną weryfikację.

Zakończenie

Korzystając z tego przewodnika, teraz wiesz jak wyodrębnić informacje o podpisie czcionki OpenType oraz szczegółowe dane podpisu cyfrowego przy użyciu GroupDocs.Metadata for Java. Integracja tych kroków w Twoich aplikacjach wzmacnia bezpieczeństwo dokumentów, usprawnia weryfikację zasobów i wspiera inicjatywy zgodności.

Kolejne kroki

  • Eksperymentuj z przetwarzaniem wsadowym, aby efektywnie obsługiwać duże biblioteki czcionek.
  • Połącz wyodrębnione dane z narzędziami audytu bezpieczeństwa w celu automatycznego raportowania zgodności.
  • Zbadaj inne możliwości metadanych GroupDocs.Metadata, takie jak edycja lub usuwanie podpisów, gdy jest to właściwe.

Ostatnia aktualizacja: 2026-06-22
Testowano z: GroupDocs.Metadata 24.12
Autor: GroupDocs

Powiązane samouczki