วิธีการดึงข้อมูลลายเซ็นฟอนต์ OpenType ใน Java ด้วย GroupDocs.Metadata

ในแอปพลิเคชันสมัยใหม่ การ ดึงข้อมูลลายเซ็นฟอนต์ OpenType มีความสำคัญสำหรับการยืนยันความแท้ของฟอนต์และการปกป้องสินทรัพย์ดิจิทัลของคุณ คู่มือฉบับนี้จะแสดงขั้นตอนการดึงทั้งแฟล็กลายเซ็นและรายละเอียดเชิงคริปโตทั้งหมดจากฟอนต์ OpenType โดยใช้ GroupDocs.Metadata for Java ไม่ว่าคุณจะสร้างไพป์ไลน์เนื้อหาที่เน้นความปลอดภัยหรือเพียงต้องการตรวจสอบไลบรารีฟอนต์ เทคนิคต่อไปนี้จะทำให้กระบวนการทำงานของคุณเชื่อถือได้และรวดเร็ว

คำตอบสั้น

  • ต้องใช้ไลบรารีอะไร? GroupDocs.Metadata for Java (v24.12)
  • ต้องการเวอร์ชัน Java ใด? JDK 8 หรือใหม่กว่า
  • ต้องการไลเซนส์หรือไม่? ทดลองใช้ฟรีสำหรับการประเมิน; จำเป็นต้องมีไลเซนส์เต็มสำหรับการผลิต
  • สามารถประมวลผลหลายฟอนต์ได้หรือไม่? ได้ – รองรับการประมวลผลแบบแบชหรือพร้อมกัน
  • โค้ดนี้ปลอดภัยต่อเธรดหรือไม่? สร้างอินสแตนซ์ Metadata ใหม่ต่อเธรด; ตัวอ็อบเจกต์เองไม่ปลอดภัยต่อเธรด

ลายเซ็นฟอนต์ OpenType คืออะไร?

ลายเซ็นฟอนต์ OpenType คือบล็อกเชิงคริปโตที่ฝังอยู่ภายในฟอนต์ซึ่งยืนยันว่าไฟล์ไม่ได้ถูกแก้ไขตั้งแต่ถูกเซ็นต์ มันประกอบด้วยเวลาการเซ็นต์, โซ่ใบรับรอง, ตัวระบุอัลกอริทึมแฮช, และข้อมูลการเพิกถอนแบบเลือกได้ นอกจากนี้ยังรวมตัวระบุอัลกอริทึมลายเซ็น, โซ่ใบรับรองของผู้เซ็น, และรายการเพิกถอนแบบเลือก เพื่อให้สามารถตรวจสอบความสมบูรณ์และแหล่งที่มาของฟอนต์ได้อย่างครบถ้วน

ทำไมต้องใช้ GroupDocs.Metadata สำหรับ Java?

GroupDocs.Metadata รองรับ รูปแบบเข้าและออกกว่า 50 ประเภท (รวมถึง DOCX, PDF, PPTX, HTML, และรูปแบบภาพหลายประเภท) และสามารถอ่านลายเซ็น OpenType ได้โดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ ทำให้คุณสามารถประมวลผลคอลเลกชันฟอนต์หลายร้อยหน้าได้อย่างมีประสิทธิภาพ

ข้อกำหนดเบื้องต้น

  • Java Development Kit (JDK): เวอร์ชัน 8 หรือใหม่กว่า.
  • IDE: IDE ที่รองรับ Java ใดก็ได้ (IntelliJ IDEA, Eclipse, VS Code, ฯลฯ).
  • Maven: สำหรับการจัดการ dependencies.

ไลบรารีและ dependencies ที่จำเป็น

เพิ่มพิกัด Maven ของ GroupDocs.Metadata ลงในไฟล์ pom.xml ของคุณ ซึ่งจะดึงแพ็กเกจที่จำเป็นสำหรับตัวอย่าง

<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 ด้วย GroupDocs.Metadata

คลาส Metadata เป็น API หลักของ GroupDocs.Metadata สำหรับเข้าถึงเมตาดาต้าเอกสารโดยไม่ต้องโหลดไฟล์เต็ม
เพื่ออ่านลายเซ็นของฟอนต์ ให้สร้างอ็อบเจกต์ Metadata ด้วยเส้นทางไปยังไฟล์ .otf แล้วเข้าถึง DigitalSignaturePackage ของมัน วิธีนี้จะโหลดเฉพาะโครงสร้างเมตาดาต้าที่จำเป็น เที่ยงตรงการพาร์สฟอนต์ทั้งหมดและลดการใช้หน่วยความจำ อินสแตนซ์ Metadata ควรใช้ภายในบล็อก try‑with‑resources เพื่อให้แน่ใจว่าปิดอย่างถูกต้อง

โหลดไฟล์ฟอนต์ของคุณด้วย new Metadata("font.otf") ภายในบล็อก try‑with‑resources คลาส Metadata เป็นจุดเริ่มต้นของ GroupDocs.Metadata สำหรับอ่านเอกสารที่รองรับทุกประเภท รวมถึงฟอนต์ OpenType อ็อบเจกต์จะปิดโดยอัตโนมัติ ป้องกันการรั่วของทรัพยากร

วิธีการดึงแฟล็กลายเซ็นดิจิทัล

อ็อบเจกต์ DigitalSignaturePackage รวมข้อมูลที่เกี่ยวข้องกับลายเซ็นทั้งหมดของฟอนต์ รวมถึงแฟล็กและลายเซ็นแต่ละรายการ
คำตอบโดยตรง: เรียก metadata.getDigitalSignaturePackage().getFlags() หลังจากเปิดฟอนต์; ชุดแฟล็กที่คืนค่าจะบอกว่าลายเซ็นเป็นที่ถูกต้อง, ถูกเพิกถอน, หรือมีเงื่อนไขพิเศษหรือไม่ การเรียกครั้งเดียวนี้ให้การตรวจสอบสุขภาพอย่างรวดเร็วก่อนที่คุณจะเจาะลึกรายละเอียดเพิ่มเติม แฟล็กจะแสดงเป็น enumeration ที่สามารถตรวจสอบเพื่อกำหนดสถานะการเซ็น, การมี timestamp, และข้อจำกัดนโยบายใด ๆ ที่ใช้ในระหว่างการเซ็น

  1. เริ่มต้นอินสแตนซ์ Metadata ที่ชี้ไปยังไฟล์ฟอนต์ของคุณ.
  2. ดึง DigitalSignaturePackage.
  3. พิมพ์หรือบันทึกค่าแฟล็ก.
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 – เส้นทางแบบ absolute หรือ relative ไปยังฟอนต์ OpenType.
  • บล็อก try‑with‑resources รับประกันว่าอ็อบเจกต์ Metadata จะถูกปิดโดยอัตโนมัติ ป้องกันการรั่วของหน่วยความจำ.

วิธีการดึงข้อมูลลายเซ็นดิจิทัลอย่างละเอียด

CmsSignature แทนลายเซ็น CMS/PKCS#7 รายการหนึ่งที่ฝังอยู่ในฟอนต์ ให้การเข้าถึงคุณสมบัติเชิงคริปโตของมัน
คำตอบโดยตรง: ทำการวนลูปผ่าน metadata.getDigitalSignaturePackage().getSignatures(); แต่ละอ็อบเจกต์ CmsSignature จะเปิดเผยเวลาการเซ็น, อัลกอริทึมไดเจสต์, เนื้อหาที่ห่อหุ้ม, และรายละเอียดใบรับรอง ทำให้คุณสามารถสร้างรายงานการตรวจสอบเต็มรูปแบบ สำหรับแต่ละลายเซ็นคุณสามารถดึงโซ่ใบรับรองของผู้เซ็น, ตรวจสอบอัลกอริทึมแฮช, และสกัด token timestamp เพื่อยืนยันเวลาที่ลายเซ็นถูกนำไปใช้

  1. ใช้การเริ่มต้น Metadata เดียวกันกับข้างต้น.
  2. วนลูปผ่านแต่ละ CmsSignature ในแพ็กเกจ.
  3. ดึงคุณสมบัติเช่น 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: อัลกอริทึมแฮชที่ใช้ (เช่น SHA‑256).
  • Encapsulated Content: ข้อมูลเพิ่มเติมใด ๆ ที่ห่อหุ้มภายในลายเซ็น.
  • Certificates: วันที่มีผลบังคับใช้และขนาดข้อมูลดิบช่วยยืนยันตัวตนของผู้เซ็น.
  • Signers: ให้ข้อมูลเกี่ยวกับการเลือกอัลกอริทึมของผู้เซ็นแต่ละคนและ timestamp การเซ็น.

เคล็ดลับการแก้ไขปัญหา

  • หากฟอนต์ไม่มีลายเซ็นดิจิทัล, getDigitalSignaturePackage() จะคืนค่า null. ควรตรวจสอบ null เสมอก่อนเข้าถึงแฟล็กหรือลายเซ็น.
  • ตรวจสอบว่าคุณใช้เวอร์ชัน GroupDocs.Metadata เดียวกันกับที่กำหนดใน dependency ของ Maven เพื่อหลีกเลี่ยงปัญหาความเข้ากันได้.

การประยุกต์ใช้ในทางปฏิบัติ

การดึงลายเซ็นฟอนต์ OpenType มีคุณค่าในหลายสถานการณ์จริง

  1. การตรวจสอบเอกสาร: ทำการตรวจสอบอัตโนมัติสำหรับไฟล์ฟอนต์ที่มีลายเซ็นในระบบจัดการเนื้อหา.
  2. การจัดการสินทรัพย์ดิจิทัล: ยืนยันความแท้ของฟอนต์ก่อนนำไปใช้ในโครงการแบรนด์ดิ้ง.
  3. การตรวจสอบความปลอดภัย: ตรวจสอบรายละเอียดลายเซ็นเพื่อให้เป็นไปตามนโยบายความปลอดภัยภายใน.

ข้อควรพิจารณาด้านประสิทธิภาพ

  • การจัดการทรัพยากร: ใช้ try‑with‑resources เพื่อปิดอ็อบเจกต์ Metadata อย่างรวดเร็ว.
  • การประมวลผลแบบแบช: ประมวลผลฟอนต์เป็นกลุ่มเพื่อลดภาระ 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 ให้ข้อมูลลายเซ็นดิบ; คุณสามารถส่งโซ่ใบรับรองและค่าแฮชไปยังไลบรารีคริปโตแยกต่างหากเพื่อทำการตรวจสอบเต็มรูปแบบ.

สรุป

โดยทำตามคู่มือนี้ คุณจะรู้ วิธีการดึงข้อมูลลายเซ็นฟอนต์ OpenType และข้อมูลลายเซ็นดิจิทัลอย่างละเอียดโดยใช้ GroupDocs.Metadata for Java การผสานขั้นตอนเหล่านี้เข้ากับแอปพลิเคชันของคุณจะเสริมความปลอดภัยของเอกสาร, เร่งกระบวนการตรวจสอบสินทรัพย์, และสนับสนุนโครงการปฏิบัติตามข้อกำหนด

ขั้นตอนต่อไป

  • ทดลองประมวลผลแบบแบชเพื่อจัดการไลบรารีฟอนต์ขนาดใหญ่อย่างมีประสิทธิภาพ.
  • ผสานข้อมูลที่ดึงมาเข้ากับเครื่องมือการตรวจสอบความปลอดภัยของคุณเพื่อรายงานการปฏิบัติตามอัตโนมัติ.
  • สำรวจความสามารถเมตาดาต้าอื่น ๆ ของ GroupDocs.Metadata เช่น การแก้ไขหรือการลบลายเซ็นเมื่อเหมาะสม.

อัปเดตล่าสุด: 2026-06-22
ทดสอบด้วย: GroupDocs.Metadata 24.12
ผู้เขียน: GroupDocs

บทแนะนำที่เกี่ยวข้อง