Získání ohraničení odstavců z prezentací v .NET

Přehled

Tento článek vysvětluje, jak získat ohraničení, velikost a souřadnice odstavců a částí textu v Aspose.Slides. Ukazuje, jak pomocí GetRect() získat obdélník odstavce v TextFrame, jak získat souřadnice odstavce a části uvnitř textového rámce buňky tabulky a zdůrazňuje důležité podrobnosti, jako jsou měrné jednotky, vliv zalamování textu na ohraničení, převod na pixely a hodnoty efektivního formátování odstavce.

Získání souřadnic odstavce a části v TextFrame

Pomocí Aspose.Slides pro .NET mohou vývojáři nyní získat obdélníkové souřadnice pro odstavec uvnitř kolekce odstavců v TextFrame. Umožňuje také získat souřadnice části uvnitř kolekce částí odstavce. V tomto tématu ukážeme na příkladu, jak získat obdélníkové souřadnice odstavce spolu s pozicí části uvnitř odstavce.

Získání obdélníkových souřadnic odstavce

Byla přidána nová metoda GetRect(). Umožňuje získat obdélník ohraničení odstavce.

// Vytvořte objekt Presentation, který představuje soubor prezentace
using (Presentation presentation = new Presentation("Shapes.pptx"))
{
    IAutoShape shape = (IAutoShape)presentation.Slides[0].Shapes[0];
        var textFrame = (ITextFrame)shape.TextFrame;
        RectangleF rect = ((Paragraph)textFrame.Paragraphs[0]).GetRect();
}

Získání velikosti odstavce a části uvnitř textového rámce buňky tabulky

Pro získání velikosti a souřadnic Portion nebo Paragraph v textovém rámci buňky tabulky můžete použít metody IPortion.GetRect a IParagraph.GetRect.

Tento ukázkový kód demonstruje popsanou operaci:

using (Presentation pres = new Presentation("source.pptx"))
{
    Table tbl = pres.Slides[0].Shapes[0] as Table;

    ICell cell = tbl.Rows[1][1];


    double x = tbl.X + tbl.Rows[1][1].OffsetX;
    double y = tbl.Y + tbl.Rows[1][1].OffsetY;

    foreach (IParagraph para in cell.TextFrame.Paragraphs)
    {
        if (para.Text == "")
            continue;

        RectangleF rect = para.GetRect();
        IAutoShape shape =
            pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle,
                rect.X + (float)x, rect.Y + (float)y, rect.Width, rect.Height);

        shape.FillFormat.FillType = FillType.NoFill;
        shape.LineFormat.FillFormat.SolidFillColor.Color = Color.Yellow;
        shape.LineFormat.FillFormat.FillType = FillType.Solid;


        foreach (IPortion portion in para.Portions)
        {
            if (portion.Text.Contains("0"))
            {
                rect = portion.GetRect();
                shape =
                    pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle,
                        rect.X + (float)x, rect.Y + (float)y, rect.Width, rect.Height);

                shape.FillFormat.FillType = FillType.NoFill;
            }
        }
    }
}

Často kladené otázky

V jakých jednotkách jsou vráceny souřadnice odstavce a částí textu?

V bodech, kde 1 palec = 72 bodů. To platí pro všechny souřadnice a rozměry na snímku.

Ovlivňuje zalamování textu ohraničení odstavce?

Ano. Pokud je v TextFrame povoleno wrapping, text se rozbije tak, aby se vešel do šířky oblasti, což mění skutečné ohraničení odstavce.

Lze souřadnice odstavce spolehlivě převést na pixely v exportovaném obrázku?

Ano. Převod bodů na pixely provádějte pomocí: pixels = points × (DPI / 72). Výsledek závisí na DPI zvoleném pro vykreslení/export.

Jak získám „efektivní“ parametry formátování odstavce s ohledem na dědičnost stylů?

Použijte effective paragraph formatting data structure; vrátí konečné konsolidované hodnoty pro odsazení, mezerování, zalamování, RTL a další.