Pobieranie granic akapitu z prezentacji w .NET
Przegląd
Ten artykuł wyjaśnia, jak uzyskać granice, rozmiar i współrzędne akapitów oraz fragmentów tekstu w Aspose.Slides. Pokazuje, jak pobrać prostokąt akapitu w TextFrame przy użyciu GetRect(), jak uzyskać współrzędne akapitu i fragmentu wewnątrz ramki tekstowej komórki tabeli oraz podkreśla ważne szczegóły, takie jak jednostki miary, wpływ zawijania tekstu na granice, konwersję pikseli oraz wartości efektywnego formatowania akapitu.
Uzyskaj współrzędne akapitu i fragmentu w TextFrame
Korzystając z Aspose.Slides dla .NET, programiści mogą teraz uzyskać prostokątne współrzędne akapitu w kolekcji akapitów TextFrame. Pozwala to także uzyskać współrzędne fragmentu w kolekcji fragmentów akapitu. W tym temacie pokażemy, przy pomocy przykładu, jak uzyskać prostokątne współrzędne akapitu wraz z pozycją fragmentu wewnątrz akapitu.
Uzyskaj prostokątne współrzędne akapitu
Dodano nową metodę GetRect(). Umożliwia ona pobranie prostokąta granic akapitu.
// Utwórz obiekt Presentation, który reprezentuje plik prezentacji
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();
}
Uzyskaj rozmiar akapitu i fragmentu wewnątrz ramki tekstowej komórki tabeli
Aby uzyskać rozmiar i współrzędne Fragmentu lub Akapitu w ramce tekstowej komórki tabeli, możesz użyć metod IPortion.GetRect i IParagraph.GetRect.
Poniższy kod przykładowy demonstruje opisaną operację:
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;
}
}
}
}
FAQ
W jakich jednostkach zwracane są współrzędne akapitu i fragmentów tekstu?
W punktach, gdzie 1 cal = 72 punkty. Dotyczy to wszystkich współrzędnych i wymiarów na slajdzie.
Czy zawijanie wyrazów wpływa na granice akapitu?
Tak. Jeśli zawijanie jest włączone w TextFrame, tekst jest dzielony, aby dopasować się do szerokości obszaru, co zmienia rzeczywiste granice akapitu.
Czy współrzędne akapitu można wiarygodnie przeliczyć na piksele w wyeksportowanym obrazie?
Tak. Przelicz punkty na piksele używając: piksele = punkty × (DPI / 72). Wynik zależy od wybranego DPI podczas renderowania/eksportu.
Jak uzyskać „efektywne” parametry formatowania akapitu, uwzględniając dziedziczenie stylu?
Użyj efektywnej struktury danych formatowania akapitu; zwraca ona ostateczne, skonsolidowane wartości wcięć, odstępów, zawijania, RTL i inne.