เพิ่มลายเซ็นดิจิทัลให้กับการนำเสนอใน PHP
คำนำ
ใบรับรองดิจิทัล ถูกใช้เพื่อสร้างการนำเสนอ PowerPoint ที่ป้องกันด้วยรหัสผ่าน โดยระบุว่าถูกสร้างโดยองค์กรหรือบุคคลเฉพาะ ใบรับรองดิจิทัลสามารถรับได้โดยติดต่อองค์กรที่ได้รับอำนาจ – หน่วยงานออกใบรับรอง หลังจากติดตั้งใบรับรองดิจิทัลลงในระบบแล้ว สามารถใช้เพื่อเพิ่มลายเซ็นดิจิทัลให้กับการนำเสนอได้ผ่าน File -> Info -> Protect Presentation:
การนำเสนออาจมีลายเซ็นดิจิทัลมากกว่าหนึ่งรายการ หลังจากลายเซ็นดิจิทัลถูกเพิ่มลงในการนำเสนอ จะมีข้อความพิเศษปรากฏใน PowerPoint:
เพื่อทำการลงลายเซ็นบนการนำเสนอหรือเพื่อตรวจสอบความแท้ของลายเซ็นการนำเสนอ Aspose.Slides API มีคลาส DigitalSignature , คลาส DigitalSignatureCollection และเมธอด Presentation::getDigitalSignatures ปัจจุบันลายเซ็นดิจิทัลรองรับเฉพาะรูปแบบ PPTX เท่านั้น
เพิ่มลายเซ็นดิจิทัลจากใบรับรอง PFX
ตัวอย่างโค้ดด้านล่างแสดงวิธีเพิ่มลายเซ็นดิจิทัลจากใบรับรอง PFX:
- เปิดไฟล์ PFX และส่งรหัสผ่าน PFX ไปยังอ็อบเจ็กต์ DigitalSignature .
- เพิ่มลายเซ็นที่สร้างขึ้นไปยังอ็อบเจ็กต์การนำเสนอ
# เปิดไฟล์การนำเสนอ
$pres = new Presentation();
try {
# สร้างอ็อบเจ็กต์ DigitalSignature ด้วยไฟล์ PFX และรหัสผ่าน PFX
$signature = new DigitalSignature("testsignature1.pfx", "testpass1");
# คอมเมนต์ลายเซ็นดิจิทัลใหม่
$signature->setComments("Aspose.Slides digital signing test.");
# เพิ่มลายเซ็นดิจิทัลให้กับการนำเสนอ
$pres->getDigitalSignatures()->add($signature);
# บันทึกการนำเสนอ
$pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
ตอนนี้สามารถตรวจสอบได้ว่าการนำเสนอได้รับการลงลายเซ็นดิจิทัลและไม่ถูกแก้ไขหรือไม่:
# เปิดการนำเสนอ
$pres = new Presentation("SomePresentationSigned.pptx");
try {
if (java_values($pres->getDigitalSignatures()->size()) > 0) {
$allSignaturesAreValid = true;
echo("Signatures used to sign the presentation: ");
# ตรวจสอบว่าลายเซ็นดิจิทัลทั้งหมดเป็นที่ถูกต้องหรือไม่
foreach($pres->getDigitalSignatures() as $signature) {
echo($signature->getComments() . ", " . $signature->getSignTime()->toString() . " -- " . $signature->isValid() ? "VALID" : "INVALID");
$allSignaturesAreValid &= $signature->isValid();
}
if ($allSignaturesAreValid) {
echo("Presentation is genuine, all signatures are valid.");
} else {
echo("Presentation has been modified since signing.");
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
คำถามที่พบบ่อย
ฉันสามารถลบลายเซ็นที่มีอยู่ในไฟล์ได้หรือไม่?
ได้. คอลเล็กชันลายเซ็นดิจิทัลรองรับการ removing individual items และการ clearing it entirely; หลังจากที่คุณบันทึกไฟล์ การนำเสนอจะไม่มีลายเซ็นใด ๆ
ไฟล์จะกลายเป็นแบบ “อ่านอย่างเดียว” หลังจากลงลายเซ็นหรือไม่?
ไม่. ลายเซ็นช่วยรักษาความสมบูรณ์และความเป็นผู้เขียนไว้ แต่ไม่ได้บล็อกการแก้ไข เพื่อจำกัดการแก้ไข ให้ใช้ร่วมกับ “Read-only” หรือรหัสผ่าน.
ลายเซ็นจะแสดงอย่างถูกต้องในเวอร์ชันต่าง ๆ ของ PowerPoint หรือไม่?
ลายเซ็นถูกสร้างสำหรับคอนเทนเนอร์ OOXML (PPTX) เวอร์ชันสมัยใหม่ของ PowerPoint ที่รองรับลายเซ็น OOXML จะแสดงสถานะของลายเซ็นเหล่านั้นอย่างถูกต้อง