Ottieni i limiti delle porzioni di testo dalle presentazioni in C++
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 utilizzate quando è necessario recuperare i limiti di un frammento di testo, applicare formattazione solo a 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 IPortion::GetRect. Mostra anche come ottenere le coordinate dell’inizio di una porzione usando IPortion::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 viene risolta tramite ereditarietà di porzione, paragrafo, cornice di testo e tema, e la gestione dei casi in cui un carattere specificato non è disponibile.
Ottieni i limiti di una porzione di testo
Utilizza IPortion::GetRect per recuperare il rettangolo di delimitazione di una porzione di testo:
auto presentation = System::MakeObject<Presentation>(u"Shapes.pptx");
auto slide = presentation->get_Slide(0);
auto shape = System::ExplicitCast<IAutoShape>(slide->get_Shape(0));
auto paragraphs = shape->get_TextFrame()->get_Paragraphs();
for (const auto& paragraph : paragraphs)
{
auto portions = paragraph->get_Portions();
for (const auto& portion : portions)
{
auto rectangle = portion->GetRect();
auto rectangleX = rectangle.get_X();
auto rectangleY = rectangle.get_Y();
auto rectangleWidth = rectangle.get_Width();
auto rectangleHeight = rectangle.get_Height();
Console::WriteLine(u"X = {0}; Y = {1}; Width = {2}; Height = {3}", rectangleX, rectangleY, rectangleWidth, rectangleHeight);
}
}
presentation->Dispose();
Ottieni le coordinate di una porzione di testo
Utilizza IPortion::GetCoordinates per recuperare le coordinate dell’inizio di una porzione di testo:
auto presentation = System::MakeObject<Presentation>(u"Shapes.pptx");
auto slide = presentation->get_Slide(0);
auto shape = System::ExplicitCast<IAutoShape>(slide->get_Shape(0));
auto paragraphs = shape->get_TextFrame()->get_Paragraphs();
for (const auto& paragraph : paragraphs)
{
auto portions = paragraph->get_Portions();
for (const auto& portion : portions)
{
auto point = portion->GetCoordinates();
auto pointX = point.get_X();
auto pointY = point.get_Y();
Console::WriteLine(u"X = {0}; Y = {1}", pointX, pointY);
}
}
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 porzione individuale; 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 una cornice di testo?
Le proprietà a livello di porzione hanno la precedenza più alta. Se una proprietà non è impostata su IPortion, Aspose.Slides la prende da IParagraph. Se non è impostata neanche lì, Aspose.Slides utilizza lo stile di ITextFrame o di theme.
Cosa succede se il carattere specificato per una porzione è mancante sulla macchina o sul server di destinazione?
Le regole di sostituzione dei caratteri si applicano. Il testo potrebbe riformattarsi: metriche, sillabazione e larghezza possono cambiare, il che è importante per un posizionamento preciso.
Posso impostare la trasparenza o un gradiente di riempimento del testo a livello di porzione indipendentemente dal resto del paragrafo?
Sì, il colore del testo, il riempimento e la trasparenza a livello di IPortion possono differire dai frammenti adiacenti.