رندر ارائه‌ها با فونت‌های جایگزین در PHP

بررسی کلی

Aspose.Slides به شما امکان رندر ارائه‌ها را با استفاده از قوانین فونت جایگزین می‌دهد. این مقاله نشان می‌دهد چگونه یک مجموعهٔ قوانین فونت جایگزین ایجاد کنید، قوانین آن را با حذف یا اضافه کردن فونت‌های جایگزین تغییر دهید و مجموعه را به متد FontsManager::setFontFallBackRulesCollection اختصاص دهید.

پس از اختصاص مجموعهٔ قوانین فونت جایگزین به FontsManager ارائه، این قوانین در طول عملیات‌هایی مانند ذخیره، رندر و تبدیل ارائه اعمال می‌شوند. مثال نحوه استفاده از قوانین پیکربندی‌شده هنگام رندر تصویر کوچک یک اسلاید و ذخیره آن به صورت تصویر PNG را نشان می‌دهد.

رندر یک اسلاید با استفاده از قوانین فونت جایگزین

مثال زیر شامل این مراحل است:

  1. ما مجموعهٔ قوانین فونت جایگزین را ایجاد می‌کنیم.
  2. یک قانون فونت جایگزین را حذف کنید و addFallBackFonts را به قانون دیگر اضافه کنید.
  3. مجموعهٔ قوانین را به متد getFontsManager.getFontFallBackRulesCollection اختصاص دهید.
  4. با استفاده از متد Presentation.save می‌توانیم ارائه را در همان قالب ذخیره کنیم یا در قالب دیگری ذخیره کنیم. پس از تنظیم مجموعهٔ قوانین فونت جایگزین در FontsManager، این قوانین در هر عملیات روی ارائه اعمال می‌شوند: ذخیره، رندر، تبدیل و غیره.
  # ایجاد یک نمونهٔ جدید از مجموعهٔ قوانین
  $rulesList = new FontFallBackRulesCollection();
  # ایجاد چندین قانون
  $rulesList->add(new FontFallBackRule(0x400, 0x4ff, "Times New Roman"));
  foreach($rulesList as $fallBackRule) {
    # تلاش برای حذف فونت جایگزین "Tahoma" از قوانین بارگذاری شده
    $fallBackRule->remove("Tahoma");
    # و به‌روزرسانی قوانین برای بازهٔ مشخص شده
    if (java_values($fallBackRule->getRangeEndIndex()) >= 0x4000 && java_values($fallBackRule->getRangeStartIndex()) < 0x5000) {
      $fallBackRule->addFallBackFonts("Verdana");
    }
  }
  # همچنین می‌توانیم هر قانون موجود را از لیست حذف کنیم
  if (java_values($rulesList->size()) > 0) {
    $rulesList->remove($rulesList->get_Item(0));
  }
  $pres = new Presentation("input.pptx");
  try {
    # اختصاص یک لیست قوانین آماده برای استفاده
    $pres->getFontsManager()->setFontFallBackRulesCollection($rulesList);
    # رندر تصویر بندانگشتی با استفاده از مجموعهٔ قوانین اولیه و ذخیره به فرم JPEG
    $slideImage = $pres->getSlides()->get_Item(0)->getImage(1.0, 1.0);
    # ذخیره تصویر بر روی دیسک با فرمت JPEG
    try {
      $slideImage->save("Slide_0.jpg", ImageFormat::Jpeg);
    } finally {
      if (!java_is_null($slideImage)) {
        $slideImage->dispose();
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }