วิธีการดึงข้อมูลลายเซ็นฟอนต์ 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, และข้อจำกัดนโยบายใด ๆ ที่ใช้ในระหว่างการเซ็น
- เริ่มต้นอินสแตนซ์
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– เส้นทางแบบ absolute หรือ relative ไปยังฟอนต์ OpenType.- บล็อก try‑with‑resources รับประกันว่าอ็อบเจกต์
Metadataจะถูกปิดโดยอัตโนมัติ ป้องกันการรั่วของหน่วยความจำ.
วิธีการดึงข้อมูลลายเซ็นดิจิทัลอย่างละเอียด
CmsSignature แทนลายเซ็น CMS/PKCS#7 รายการหนึ่งที่ฝังอยู่ในฟอนต์ ให้การเข้าถึงคุณสมบัติเชิงคริปโตของมัน
คำตอบโดยตรง: ทำการวนลูปผ่าน metadata.getDigitalSignaturePackage().getSignatures(); แต่ละอ็อบเจกต์ CmsSignature จะเปิดเผยเวลาการเซ็น, อัลกอริทึมไดเจสต์, เนื้อหาที่ห่อหุ้ม, และรายละเอียดใบรับรอง ทำให้คุณสามารถสร้างรายงานการตรวจสอบเต็มรูปแบบ สำหรับแต่ละลายเซ็นคุณสามารถดึงโซ่ใบรับรองของผู้เซ็น, ตรวจสอบอัลกอริทึมแฮช, และสกัด token timestamp เพื่อยืนยันเวลาที่ลายเซ็นถูกนำไปใช้
- ใช้การเริ่มต้น
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: อัลกอริทึมแฮชที่ใช้ (เช่น SHA‑256).
- Encapsulated Content: ข้อมูลเพิ่มเติมใด ๆ ที่ห่อหุ้มภายในลายเซ็น.
- Certificates: วันที่มีผลบังคับใช้และขนาดข้อมูลดิบช่วยยืนยันตัวตนของผู้เซ็น.
- Signers: ให้ข้อมูลเกี่ยวกับการเลือกอัลกอริทึมของผู้เซ็นแต่ละคนและ timestamp การเซ็น.
เคล็ดลับการแก้ไขปัญหา
- หากฟอนต์ไม่มีลายเซ็นดิจิทัล,
getDigitalSignaturePackage()จะคืนค่าnull. ควรตรวจสอบnullเสมอก่อนเข้าถึงแฟล็กหรือลายเซ็น. - ตรวจสอบว่าคุณใช้เวอร์ชัน GroupDocs.Metadata เดียวกันกับที่กำหนดใน dependency ของ Maven เพื่อหลีกเลี่ยงปัญหาความเข้ากันได้.
การประยุกต์ใช้ในทางปฏิบัติ
การดึงลายเซ็นฟอนต์ OpenType มีคุณค่าในหลายสถานการณ์จริง
- การตรวจสอบเอกสาร: ทำการตรวจสอบอัตโนมัติสำหรับไฟล์ฟอนต์ที่มีลายเซ็นในระบบจัดการเนื้อหา.
- การจัดการสินทรัพย์ดิจิทัล: ยืนยันความแท้ของฟอนต์ก่อนนำไปใช้ในโครงการแบรนด์ดิ้ง.
- การตรวจสอบความปลอดภัย: ตรวจสอบรายละเอียดลายเซ็นเพื่อให้เป็นไปตามนโยบายความปลอดภัยภายใน.
ข้อควรพิจารณาด้านประสิทธิภาพ
- การจัดการทรัพยากร: ใช้ 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