Hämta styckegränser från presentationer i .NET
Översikt
Den här artikeln förklarar hur man hämtar gränser, storlek och koordinater för stycken och textdelar i Aspose.Slides. Den visar hur man hämtar ett styckes rektangel i ett TextFrame med GetRect(), hur man får stycke- och delkoordinater i ett tabellcells‑TextFrame, och lyfter fram viktiga detaljer såsom mätenheter, effekten av textradbrytning på gränser, pixelförvandling och effektiva formateringsvärden för stycket.
Hämta stycke- och delkoordinater i ett TextFrame
Med Aspose.Slides för .NET kan utvecklare nu hämta de rektangulära koordinaterna för ett Paragraph i Paragraph‑samlingen i ett TextFrame. Det gör det också möjligt att hämta koordinaterna för en Portion i Portion‑samlingen för ett Paragraph. I det här avsnittet kommer vi att demonstrera med ett exempel hur man får de rektangulära koordinaterna för ett Paragraph tillsammans med positionen för Portion i ett Paragraph.
Hämta rektangulära koordinater för ett Paragraph
Den nya metoden GetRect() har lagts till. Den gör det möjligt att hämta ett Paragraph:s bounds‑rektangel.
// Instansiera ett Presentation-objekt som representerar en presentationsfil
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();
}
Hämta storleken för ett Paragraph och en Portion i ett tabellcell‑TextFrame
För att få storleken och koordinaterna för en Portion eller ett Paragraph i ett tabellcell‑TextFrame, kan du använda metoderna IPortion.GetRect och IParagraph.GetRect.
Det här exempelprogrammet demonstrerar den beskrivna operationen:
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;
}
}
}
}
Vanliga frågor
I vilka enheter anges koordinaterna för ett Paragraph och textdelar?
I punkter, där 1 tum = 72 punkter. Detta gäller för alla koordinater och dimensioner på bilden.
Påverkar radbrytning ett Paragraph:s gränser?
Ja. Om wrapping är aktiverad i TextFrame, bryts texten för att passa områdets bredd, vilket ändrar det faktiska gränsvärdet för Paragraph.
Kan Paragraph‑koordinater på ett pålitligt sätt omvandlas till pixlar i den exporterade bilden?
Ja. Konvertera punkter till pixlar med: pixels = points × (DPI / 72). Resultatet beror på den DPI som valts för rendering/export.
Hur får jag de “effektiva” formateringsparametrarna för ett Paragraph, med beaktande av stilarv?
Använd effective paragraph formatting data structure; den returnerar de slutgiltiga sammanslagna värdena för indrag, avstånd, radbrytning, RTL och mer.