Szövegrész határainak lekérése prezentációkból C++-ban

Áttekintés

A szövegrész egy bekezdésen belüli adott szövegtöredéket képvisel, és lehetővé teszi, hogy ezzel a töredékkel a környező tartalomtól függetlenül dolgozzunk. Az Aspose.Slides-ben a szövegrészek akkor használhatók, amikor meg kell határozni egy szövegtöredék határait, csak a bekezdés egy részére kell formázást alkalmazni, vagy részletesebb szinten kell szabályozni a szöveg viselkedését.

Ez a cikk bemutatja, hogyan lehet lekérni egy szövegrész határoló téglalapját a IPortion::GetRect használatával. Emellett megmutatja, hogyan lehet lekérni egy szövegrész elejének koordinátáit a IPortion::GetCoordinates segítségével. Továbbá kiemeli a szövegrészhez kapcsolódó gyakori helyzeteket, például egy hiperhivatkozás alkalmazását egyetlen szövegtöredékre, a formázás hogyan kerül feloldásra a szövegrész, bekezdés, szövegdoboz és téma öröklődésén keresztül, valamint a megadott betűkészlet hiányának kezelését.

A szövegrész határainak lekérése

A szövegrész határoló téglalapjának lekéréséhez használja a IPortion::GetRect metódust:

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

A szövegrész koordinátáinak lekérése

A szövegrész elejének koordinátáinak lekéréséhez használja a IPortion::GetCoordinates metódust:

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

GYIK

Alkalmazhatok hiperhivatkozást csak a bekezdésen belüli szöveg egy részére?

Igen, a hiperhivatkozás hozzárendelése lehetséges egy egyedi szövegrészhez; csak ez a töredék lesz kattintható, nem az egész bekezdés.

Hogyan működik a stílus öröklődés: mit felülír egy szövegrész, és mi kerül át a bekezdésből vagy szövegdobozból?

A szövegrész szintű tulajdonságok a legmagasabb precedenciával rendelkeznek. Ha egy tulajdonság nincs beállítva az IPortion, az Aspose.Slides a IParagraph értékét veszi át. Ha ott sem van beállítva, akkor az Aspose.Slides a ITextFrame vagy a theme stílusát használja.

Mi történik, ha a szövegrészhez megadott betűkészlet hiányzik a célgép vagy szerver gépén?

A betűkészlet helyettesítési szabályok érvényesek. A szöveg átrendeződhet: a metrikák, elválasztás és a szélesség változhat, ami fontos a pontos elhelyezésnél.

Beállíthatok szövegrész-specifikus kitöltési átlátszóságot vagy színátmenetet a bekezdés többi részétől függetlenül?

Igen, a szövegszín, a kitöltés és az átlátszóság az IPortion szintjén eltérhet a szomszédos töredékektől.