افزودن امضاهای دیجیتال به ارائه‌ها در PHP

مقدمه

گواهی دیجیتال برای ایجاد یک ارائهٔ پاورپوینت محافظت‌شده با رمز عبور استفاده می‌شود که به‌عنوان ساخته‌شده توسط سازمان یا شخص خاصی علامت‌گذاری شده است. می‌توان گواهی دیجیتال را با تماس با یک سازمان معتبر—یک مرجع صدور گواهی—به‌دست آورد. پس از نصب گواهی دیجیتال در سیستم، می‌توان از آن برای افزودن امضای دیجیتال به ارائه از طریق File -> Info -> Protect Presentation استفاده کرد:

todo:image_alt_text

یک ارائه می‌تواند بیش از یک امضای دیجیتال داشته باشد. پس از افزودن امضای دیجیتال به ارائه، پیام ویژه‌ای در PowerPoint نمایش داده می‌شود:

todo:image_alt_text

برای امضای ارائه یا بررسی صحت امضای ارائه‌ها، Aspose.Slides API کلاس‌های DigitalSignature، DigitalSignatureCollection و متد Presentation::getDigitalSignatures را فراهم می‌کند. در حال حاضر، امضای دیجیتال فقط برای فرمت PPTX پشتیبانی می‌شود.

افزودن امضای دیجیتال از گواهی PFX

نمونه کد زیر نمایش می‌دهد که چگونه می‌توان امضای دیجیتال را از یک گواهی PFX اضافه کرد:

  1. فایل PFX را باز کنید و رمز عبور PFX را به شیء DigitalSignature پاس دهید.
  2. امضای ایجادشده را به شیء ارائه اضافه کنید.
  # در حال باز کردن فایل ارائه
  $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();
    }
  }

سوالات متداول

آیا می‌توانم امضاهای موجود را از یک فایل حذف کنم؟

بله. مجموعهٔ امضاهای دیجیتال امکان حذف موارد جداگانه را دارد و می‌تواند به‌طور کامل پاک شود؛ پس از ذخیرهٔ فایل، ارائه دیگر امضا نخواهد داشت.

آیا پس از امضا شدن فایل به «فقط‑خواندنی» تبدیل می‌شود؟

خیر. یک امضا یکپارچگی و مالکیت را حفظ می‌کند اما ویرایش‌ها را مسدود نمی‌کند. برای محدود کردن ویرایش، آن را با “Read-only” یا یک رمز عبور ترکیب کنید.

آیا امضا در نسخه‌های مختلف PowerPoint به‌درستی نمایش داده می‌شود؟

امضا برای کانتینر OOXML (PPTX) ایجاد شده است. نسخه‌های جدید پاورپوینت که از امضای OOXML پشتیبانی می‌کنند، وضعیت این امضاها را به‌درستی نمایش می‌دهند.