เพิ่มลายเซ็นดิจิทัลให้กับงานนำเสนอด้วย Python

บทนำ

ใบรับรองดิจิทัล ถูกใช้เพื่อสร้างงานนำเสนอ PowerPoint ที่มีการป้องกันด้วยรหัสผ่าน โดยระบุว่าได้สร้างโดยองค์กรหรือบุคคลเฉพาะ ใบรับรองดิจิทัลสามารถได้รับโดยติดต่อกับองค์กรที่ได้รับอนุญาต‑หน่วยรับรองใบรับรอง หลังจากติดตั้งใบรับรองดิจิทัลลงในระบบแล้ว สามารถใช้เพื่อเพิ่มลายเซ็นดิจิทัลให้กับงานนำเสนอผ่านเมนู File -> Info -> Protect Presentation:

todo:image_alt_text

งานนำเสนออาจมีลายเซ็นดิจิทัลมากกว่าหนึ่งรายการ หลังจากที่เพิ่มลายเซ็นดิจิทัลลงในงานนำเสนอ จะมีข้อความพิเศษปรากฏใน PowerPoint:

todo:image_alt_text

หากต้องการลงลายเซ็นงานนำเสนอหรือตรวจสอบความถูกต้องของลายเซ็นงานนำเสนอ, Aspose.Slides API มีคลาส DigitalSignature คลาส DigitalSignatureCollection และคุณสมบัติ Presentation.digital_signatures ให้ใช้งาน ในปัจจุบัน ลายเซ็นดิจิทัลรองรับเฉพาะรูปแบบ PPTX เท่านั้น.

เพิ่มลายเซ็นดิจิทัลจากใบรับรอง PFX

ตัวอย่างโค้ดด้านล่างจะแสดงวิธีเพิ่มลายเซ็นดิจิทัลจากใบรับรอง PFX:

  1. เปิดไฟล์ PFX และส่งรหัสผ่าน PFX ไปยังอ็อบเจกต์ DigitalSignature .
  2. เพิ่มลายเซ็นที่สร้างขึ้นไปยังอ็อบเจกต์งานนำเสนอ.
import aspose.slides as slides

with slides.Presentation() as pres:
    # สร้างอ็อบเจกต์ DigitalSignature ด้วยไฟล์ PFX และรหัสผ่าน PFX
    signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")

    # แสดงความคิดเห็นลายเซ็นดิจิทัลใหม่
    signature.comments = "Aspose.Slides digital signing test."

    # เพิ่มลายเซ็นดิจิทัลลงในงานนำเสนอ
    pres.digital_signatures.add(signature)

    # บันทึกงานนำเสนอ
    pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)

ตอนนี้สามารถตรวจสอบได้ว่างานนำเสนอถูกลงลายเซ็นดิจิทัลและไม่ได้ถูกแก้ไข:

# เปิดงานนำเสนอ
with slides.Presentation("SomePresentationSigned.pptx") as pres:
    if len(pres.digital_signatures) > 0:
        allSignaturesAreValid = True

        print("Signatures used to sign the presentation: ")
        # ตรวจสอบว่าลายเซ็นดิจิทัลทั้งหมดมีความถูกต้องหรือไม่
        for signature in pres.digital_signatures :
            print(signature.certificate.subject_name.name + ", "
                    + signature.sign_time.strftime("yyyy-MM-dd HH:mm") + " -- " + "VALID" if signature.is_valid else "INVALID")
            allSignaturesAreValid = allSignaturesAreValid and signature.is_valid
        

        if allSignaturesAreValid:
            print("Presentation is genuine, all signatures are valid.")
        else:
            print("Presentation has been modified since signing.")

คำถามที่พบบ่อย

ฉันสามารถลบลายเซ็นที่มีอยู่ในไฟล์ได้หรือไม่?

ใช่. คอลเลกชันลายเซ็นดิจิทัลสนับสนุนการ ลบรายการเดี่ยว และการ ลบทั้งหมด; หลังจากคุณบันทึกไฟล์ งานนำเสนอจะไม่มีลายเซ็นใด ๆ.

ไฟล์จะกลายเป็น “อ่านอย่างเดียว” หลังจากลงลายเซ็นหรือไม่?

ไม่. ลายเซ็นทำให้ข้อมูลคงความสมบูรณ์และแสดงความเป็นผู้เขียน แต่ไม่บล็อกการแก้ไข เพื่อจำกัดการแก้ไขให้รวมกับ “อ่านอย่างเดียว” หรือรหัสผ่าน.

ลายเซ็นจะแสดงผลอย่างถูกต้องในเวอร์ชันต่าง ๆ ของ PowerPoint หรือไม่?

ลายเซ็นถูกสร้างสำหรับคอนเทนเนอร์ OOXML (PPTX) เวอร์ชัน PowerPoint สมัยใหม่ที่รองรับลายเซ็น OOXML จะแสดงสถานะของลายเซ็นเหล่านั้นอย่างถูกต้อง.