Recuperare i confini delle porzioni di testo dalle presentazioni in PHP

Panoramica

Una porzione di testo rappresenta un frammento specifico di testo all’interno di un paragrafo e consente di lavorare con quel frammento in modo indipendente dal contenuto circostante. In Aspose.Slides, le porzioni possono essere usate quando è necessario recuperare i confini di un frammento di testo, applicare formattazione solo a una parte di un paragrafo o controllare il comportamento del testo a un livello più dettagliato.

Questo articolo mostra come ottenere il rettangolo di delimitazione di una porzione utilizzando Portion::getRect. Mostra inoltre come ottenere le coordinate dell’inizio di una porzione usando Portion::getCoordinates. Inoltre, evidenzia scenari comuni relativi alle porzioni, come l’applicazione di un collegamento ipertestuale a un singolo frammento di testo, la comprensione di come la formattazione venga risolta attraverso eredità di porzione, paragrafo, riquadro di testo e tema, e la gestione dei casi in cui un carattere specificato non è disponibile.

Ottenere i confini di una porzione di testo

Usa Portion::getRect per recuperare il rettangolo di delimitazione di una porzione di testo:

$presentation = new Presentation("Shapes.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $shape = $slide->getShapes()->get_Item(0);

    foreach ($shape->getTextFrame()->getParagraphs() as $paragraph) {
        foreach ($paragraph->getPortions() as $portion) {
            $rectangle = $portion->getRect();
            $rectangleX = java_values($rectangle->getX());
            $rectangleY = java_values($rectangle->getY());
            $rectangleWidth = java_values($rectangle->getWidth());
            $rectangleHeight = java_values($rectangle->getHeight());

            echo("X = " . $rectangleX . "; Y = " . $rectangleY . "; Width = " . $rectangleWidth . "; Height = " . $rectangleHeight);
        }
    }
} finally {
    $presentation->dispose();
}

Ottenere le coordinate di una porzione di testo

Usa Portion::getCoordinates per recuperare le coordinate dell’inizio di una porzione di testo:

$presentation = new Presentation("Shapes.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $shape = $slide->getShapes()->get_Item(0);

    foreach ($shape->getTextFrame()->getParagraphs() as $paragraph) {
        foreach ($paragraph->getPortions() as $portion) {
            $point = $portion->getCoordinates();
            $pointX = java_values($point->getX());
            $pointY = java_values($point->getY());

            echo("X = " . $pointX . "; Y = " . $pointY);
        }
    }
} finally {
    $presentation->dispose();
}

FAQ

Posso applicare un collegamento ipertestuale solo a una parte del testo all’interno di un singolo paragrafo?

Sì, puoi assegnare un collegamento ipertestuale a una singola porzione; solo quel frammento sarà cliccabile, non l’intero paragrafo.

Come funziona l’ereditarietà di stile: cosa sovrascrive una porzione e cosa viene preso da un paragrafo o da un riquadro di testo?

Le proprietà a livello di porzione hanno la precedenza più alta. Se una proprietà non è impostata sulla Portion, Aspose.Slides la prende dal Paragraph. Se non è impostata neanche lì, Aspose.Slides utilizza lo stile del TextFrame o del theme.

Cosa succede se il carattere specificato per una porzione è mancante sulla macchina o sul server di destinazione?

Vengono applicate le Regole di sostituzione dei caratteri. Il testo potrebbe subire una riformattazione: metriche, sillabazione e larghezza possono cambiare, il che è importante per un posizionamento preciso.

Posso impostare la trasparenza o un gradiente di riempimento del testo specifico per una porzione in modo indipendente dal resto del paragrafo?

Sì, colore del testo, riempimento e trasparenza a livello di Portion possono differire dai frammenti adiacenti.