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.