Förbättra dina presentationer med AutoFit i PHP

Introduktion

Som standard, när du lägger till en textruta, använder Microsoft PowerPoint inställningen Resize shape to fix text för textrutan — den ändrar automatiskt storleken på textrutan så att dess text alltid får plats.

textbox-i-powerpoint

  • När texten i textrutan blir längre eller större förstorar PowerPoint textrutan — ökning av höjden — för att rymma mer text.
  • När texten i textrutan blir kortare eller mindre minskar PowerPoint textrutan — minskning av höjden — för att ta bort överflödig plats.

I PowerPoint finns det fyra viktiga parametrar eller alternativ som styr autofit‑beteendet för en textruta:

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

autofit-alternativ-powerpoint

Aspose.Slides for PHP via Java erbjuder liknande alternativ — några egenskaper i klassen TextFrameFormat — som låter dig kontrollera autofit‑beteendet för textrutor i presentationer.

Resize a Shape to Fit Text

Om du vill att texten i en ruta alltid ska få plats i den efter att texten förändrats, måste du använda alternativet Resize shape to fix text. För att ange denna inställning, sätt egenskapen AutofitType (från klassen TextFrameFormat) till Shape.

alwaysfit-inställning-powerpoint

Den här PHP‑koden visar hur du anger att text alltid ska få plats i sin ruta i en PowerPoint‑presentation:

  $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();
    }
  }

Om texten blir längre eller större kommer textrutan automatiskt att ändra storlek (ökning i höjd) så att all text får plats. Om texten blir kortare sker motsatsen.

Do Not Autofit

Om du vill att en textruta eller form ska behålla sina mått oavsett vilka ändringar som görs i den innehållande texten, måste du använda alternativet Do not Autofit. För att ange denna inställning, sätt egenskapen AutofitType (från klassen TextFrameFormat) till None.

donotautofit-inställning-powerpoint

Den här PHP‑koden visar hur du anger att en textruta alltid ska behålla sina mått i en PowerPoint‑presentation:

  $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();
    }
  }

När texten blir för lång för sin ruta, rinner den över.

Shrink Text on Overflow

Om en text blir för lång för sin ruta kan du med alternativet Shrink text on overflow ange att textens storlek och avstånd ska minskas så att den får plats. För att ange denna inställning, sätt egenskapen AutofitType (från klassen TextFrameFormat) till Normal.

shrinktextonoverflow-inställning-powerpoint

Den här PHP‑koden visar hur du anger att en text ska krympas vid överflöde i en PowerPoint‑presentation:

  $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

Om du vill att texten i en form ska radbrytas inuti formen när den överskrider formens kant (endast bredd) måste du använda parametern Wrap text in shape. För att ange denna inställning, sätt egenskapen WrapText (från klassen TextFrameFormat) till true.

Den här PHP‑koden visar hur du använder inställningen Wrap Text i en PowerPoint‑presentation:

  $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

Påverkar textramens interna marginaler AutoFit?

Ja. Padding (internt marginaler) minskar det användbara området för text, så AutoFit aktiveras tidigare — fonten krymps eller formen storleksändras tidigare. Kontrollera och justera marginalerna innan du finjusterar AutoFit.

Hur samverkar AutoFit med manuella och mjuka radbrytningar?

Tvingade brytningar kvarstår, och AutoFit anpassar fontstorlek och avstånd runt dem. Att ta bort onödiga brytningar minskar ofta hur aggressivt AutoFit måste krympa texten.

Påverkar byte av temafont eller fontsubstitution resultatet av AutoFit?

Ja. Att ersätta med en font som har andra glyf-mått ändrar textens bredd/höjd, vilket kan förändra slutlig fontstorlek och radbrytning. Efter varje fontbyte eller substitution bör du kontrollera bilderna igen.