Manage Text Portions in Presentations Using PHP

Get Coordinates of a Text Portion

getCoordinates() method has been added to IPortion and Portion class which allows retrieving the coordinates of the beginning of the portion.

  # Instantiate Prseetation class that represents the PPTX
  $pres = new Presentation();
  try {
    # Reshaping the context of presentation
    $shape = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $textFrame = $shape->getTextFrame();
    foreach($textFrame->getParagraphs() as $paragraph) {
      foreach($paragraph->getPortions() as $portion) {
        $point = $portion->getCoordinates();
        echo("X: " . $point->$x . " Y: " . $point->$y);
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Can I apply a hyperlink to only part of the text within a single paragraph?

Yes, you can assign a hyperlink to an individual portion; only that fragment will be clickable, not the entire paragraph.

How does style inheritance work: what does a Portion override, and what is taken from Paragraph/TextFrame?

Portion-level properties have the highest precedence. If a property is not set on the Portion, the engine takes it from the Paragraph; if it is not set there either, from the TextFrame or the theme style.

What happens if the font specified for a Portion is missing on the target machine/server?

Font substitution rules apply. The text may reflow: metrics, hyphenation, and width can change, which matters for precise positioning.

Can I set a Portion-specific text fill transparency or gradient independent of the rest of the paragraph?

Yes, text color, fill, and transparency at the Portion level can differ from neighboring fragments.