بهبود ارائه‌های شما با AutoFit در PHP

مقدمه

به‌ طور پیش‌فرض، وقتی یک کادر متن اضافه می‌کنید، Microsoft PowerPoint از تنظیم Resize shape to fix text برای کادر متن استفاده می‌کند—به‌طور خودکار اندازه کادر متن را تغییر می‌دهد تا متن همیشه درون آن جا بگیرد.

textbox-in-powerpoint

  • وقتی متن در کادر متن طولانی یا بزرگ‌تر می‌شود، PowerPoint به‌صورت خودکار کادر متن را بزرگ می‌کند—ارتفاع آن را افزایش می‌دهد—تا بتواند متن بیشتری را در خود جای دهد.
  • وقتی متن در کادر متن کوتاه یا کوچک‌تر می‌شود، PowerPoint به‌صورت خودکار کادر متن را کوچک می‌کند—ارتفاع آن را کاهش می‌دهد—تا فضای اضافه حذف شود.

در PowerPoint، ۴ پارامتر یا گزینه مهم وجود دارد که رفتار autofit برای یک کادر متن را کنترل می‌کند:

  • Do not Autofit
  • Shrink text on overflow
  • Resize shape to fit text
  • Wrap text in shape.

autofit-options-powerpoint

Aspose.Slides for PHP via Java گزینه‌های مشابهی ارائه می‌دهد—برخی ویژگی‌ها در کلاس TextFrameFormat که به شما امکان کنترل رفتار autofit برای کادرهای متن در ارائه‌ها را می‌دهد.

Resize a Shape to Fit Text

اگر می‌خواهید متن در یک جعبه همیشه پس از تغییرات داخل متن در آن جعبه جا بگیرد، باید از گزینه Resize shape to fix text استفاده کنید. برای تعیین این تنظیم، ویژگی AutofitType (از کلاس TextFrameFormat) را روی Shape تنظیم کنید.

alwaysfit-setting-powerpoint

این کد PHP نشان می‌دهد که چگونه تنظیم کنید متن همیشه در جعبه خود در یک ارائه PowerPoint جا بگیرد:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 30, 30, 350, 100);
    $portion = new Portion("lorem ipsum...");
    $portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
    $portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $autoShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->add($portion);
    $textFrameFormat = $autoShape->getTextFrame()->getTextFrameFormat();
    $textFrameFormat::setAutofitType(TextAutofitType::Shape);
    $pres->save("Output-presentation.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

اگر متن طولانی یا بزرگ‌تر شود، کادر متن به‌صورت خودکار تغییر اندازه می‌دهد (ارتفاع افزایش می‌یابد) تا تمام متن درون آن جا بگیرد. اگر متن کوتاه‌تر شود، برعکس اتفاق می‌افتد.

Do Not Autofit

اگر می‌خواهید یک کادر متن یا شکل ابعاد خود را صرف‌نظر از تغییرات متن حفظ کند، باید از گزینه Do not Autofit استفاده کنید. برای تعیین این تنظیم، ویژگی AutofitType را از کلاس TextFrameFormat روی None تنظیم کنید.

donotautofit-setting-powerpoint

این کد PHP نشان می‌دهد که چگونه تنظیم کنید یک کادر متن همیشه ابعاد خود را در یک ارائه PowerPoint حفظ کند:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 30, 30, 350, 100);
    $portion = new Portion("lorem ipsum...");
    $portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
    $portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $autoShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->add($portion);
    $textFrameFormat = $autoShape->getTextFrame()->getTextFrameFormat();
    $textFrameFormat::setAutofitType(TextAutofitType::None);
    $pres->save("Output-presentation.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

وقتی متن برای جعبه‌اش بیش از حد طولانی شود، از جعبه خارج می‌شود.

Shrink Text on Overflow

اگر متنی برای جعبه‌اش بیش از حد طولانی باشد، با گزینه Shrink text on overflow می‌توانید مشخص کنید که اندازه و فاصله متن باید کاهش یابد تا در جعبه جا بگیرد. برای تعیین این تنظیم، ویژگی AutofitType را از کلاس TextFrameFormat روی Normal تنظیم کنید.

shrinktextonoverflow-setting-powerpoint

این کد PHP نشان می‌دهد که چگونه تنظیم کنید متن در هنگام سرریز کوچک شود در یک ارائه PowerPoint:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 30, 30, 350, 100);
    $portion = new Portion("lorem ipsum...");
    $portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
    $portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $autoShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->add($portion);
    $textFrameFormat = $autoShape->getTextFrame()->getTextFrameFormat();
    $textFrameFormat::setAutofitType(TextAutofitType::Normal);
    $pres->save("Output-presentation.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Wrap Text

اگر می‌خواهید متن داخل یک شکل وقتی بیش از حد عرض شکل شود، داخل همان شکل بسته‌بندی شود (فقط عرض)، باید از پارامتر Wrap text in shape استفاده کنید. برای تعیین این تنظیم، ویژگی WrapText را از کلاس TextFrameFormat روی true تنظیم کنید.

این کد PHP نشان می‌دهد که چگونه تنظیم Wrap Text را در یک ارائه PowerPoint استفاده کنید:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 30, 30, 350, 100);
    $portion = new Portion("lorem ipsum...");
    $portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
    $portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $autoShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->add($portion);
    $textFrameFormat = $autoShape->getTextFrame()->getTextFrameFormat();
    $textFrameFormat::setWrapText(NullableBool::True);
    $pres->save("Output-presentation.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

آیا حاشیه‌های داخلی فریم متن بر AutoFit تأثیر می‌گذارد؟

بله. Padding (حاشیه‌های داخلی) فضای قابل استفاده برای متن را کاهش می‌دهد، بنابراین AutoFit زودتر فعال می‌شود—اندازه قلم یا شکل را زودتر کوچک می‌کند. قبل از تنظیم AutoFit حاشیه‌ها را بررسی و تنظیم کنید.

AutoFit چگونه با شکست‌های خط دستی و نرم تعامل دارد؟

شکست‌های خط اجباری در مکان خود باقی می‌مانند و AutoFit اندازه قلم و فواصل را حول آن‌ها تنظیم می‌کند. حذف شکست‌های غیرضروری معمولاً نیاز AutoFit به کوچک‌سازی متن را کاهش می‌دهد.

آیا تغییر فونت تم یا اعمال جایگزینی فونت بر نتایج AutoFit تأثیر دارد؟

بله. جایگزینی به فونتی با متریک‌های گلیف متفاوت، عرض/ارتفاع متن را تغییر می‌دهد و می‌تواند اندازه نهایی قلم و بسته‌بندی خطوط را تحت تأثیر قرار دهد. پس از هر تغییر یا جایگزینی فونت، اسلایدها را مجدداً بررسی کنید.