Získání ohraničení textových úseků v prezentacích v C++

Přehled

Textový úsek představuje konkrétní fragment textu uvnitř odstavce a umožňuje s tímto fragmentem pracovat nezávisle na okolním obsahu. V Aspose.Slides lze úseky použít, když potřebujete získat ohraničení textového fragmentu, aplikovat formátování pouze na část odstavce nebo řídit chování textu na podrobnější úrovni.

Tento článek ukazuje, jak získat ohraničující obdélník úseku pomocí IPortion::GetRect. Také ukazuje, jak získat souřadnice začátku úseku pomocí IPortion::GetCoordinates. Navíc zdůrazňuje běžné scénáře související s úseky, jako je aplikace hypertextového odkazu na jediný textový fragment, pochopení toho, jak se formátování řeší prostřednictvím úseku, odstavce, textového rámce a dědičnosti motivu, a řešení situací, kdy je požadované písmo nedostupné.

Získání ohraničení textového úseku

Použijte IPortion::GetRect k získání ohraničujícího obdélníku textového úseku:

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

Získání souřadnic textového úseku

Použijte IPortion::GetCoordinates k získání souřadnic začátku textového úseku:

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

Často kladené otázky

Mohu použít hypertextový odkaz pouze na část textu v jednom odstavci?

Ano, můžete přiřadit hypertextový odkaz jednotlivému úseku; pouze tento fragment bude klikací, ne celý odstavec.

Jak funguje dědičnost stylů: co úsek přepisuje a co je převzato z odstavce nebo textového rámce?

Vlastnosti na úrovni úseku mají nejvyšší prioritu. Pokud není vlastnost nastavena na IPortion, Aspose.Slides ji převezme z IParagraph. Pokud není nastavena ani tam, Aspose.Slides použije styl z ITextFrame nebo theme.

Co se stane, pokud je písmo určené pro úsek na cílovém počítači nebo serveru chybějící?

Pravidla nahrazování písem se použijí. Text se může přeuspořádat: mohou se změnit metriky, dělení slov a šířka, což je důležité pro přesné umístění.

Mohu nastavit specifickou průhlednost výplně textu nebo gradient úseku nezávisle na zbytku odstavce?

Ano, barva textu, výplň a průhlednost na úrovni IPortion se mohou lišit od sousedních fragmentů.