Hämta styckegränser från presentationer i Java
Översikt
Denna artikel förklarar hur man får gränser, storlek och koordinater för stycken och textdelar i Aspose.Slides. Den visar hur man hämtar ett styckes rektangel i en TextFrame med getRect(), hur man får stycke- och delkoordinater inuti en tabellcells textram, och belyser viktiga detaljer såsom mätenheter, hur textomslag påverkar gränser, pixelkonvertering och effektiva formateringsvärden för stycke.
Hämta stycke- och delkoordinater i en TextFrame
Med Aspose.Slides för Java kan utvecklare nu få de rektangulära koordinaterna för ett stycke i styckeskollektionen i en TextFrame. Det möjliggör även att hämta koordinaterna för del i delkollektionen för ett stycke. I detta avsnitt demonstrerar vi med ett exempel hur man får de rektangulära koordinaterna för ett stycke samt positionen för en del i stycket.
AutoShape shape = (AutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);
TextFrame textFrame = (TextFrame)shape.getTextFrame();
for (IParagraph paragraph : textFrame.getParagraphs()){
for (IPortion portion : paragraph.getPortions()){
Point2D.Float point = portion.getCoordinates();
}
}
Hämta rektangulära koordinater för ett stycke
Med metoden getRect() kan utvecklare få styckets gränsrektangel.
Presentation pres = new Presentation("HelloWorld.pptx");
try {
IAutoShape shape = (IAutoShape) pres.getSlides().get_Item(0).getShapes().get_Item(0);
ITextFrame textFrame = shape.getTextFrame();
Rectangle2D.Float rect = textFrame.getParagraphs().get_Item(0).getRect();
System.out.println("X: " + rect.x + " Y: " + rect.y + " Width: " + rect.width + " Height: " + rect.height);
} finally {
if (pres != null) pres.dispose();
}
Hämta storleken för ett stycke och del i en tabellcells TextFrame
För att hämta Portion eller Paragraph storlek och koordinater i en tabellcells textram kan du använda metoderna IPortion.getRect och IParagraph.getRect.
Detta exempel visar den beskrivna operationen:
Presentation pres = new Presentation("source.pptx");
try {
Table tbl = (Table)pres.getSlides().get_Item(0).getShapes().get_Item(0);
ICell cell = tbl.getRows().get_Item(1).get_Item(1);
double x = tbl.getX() + tbl.getRows().get_Item(1).get_Item(1).getOffsetX();
double y = tbl.getY() + tbl.getRows().get_Item(1).get_Item(1).getOffsetY();
for (IParagraph para : cell.getTextFrame().getParagraphs())
{
if (para.getText().equals(""))
continue;
Rectangle2D.Float rect = para.getRect();
IAutoShape shape =
pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle,
(float)rect.getX() + (float)x, (float)rect.getY() + (float)y, (float)rect.getWidth(), (float)rect.getHeight());
shape.getFillFormat().setFillType(FillType.NoFill);
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.YELLOW);
shape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
for (IPortion portion : para.getPortions())
{
if (portion.getText().contains("0"))
{
rect = portion.getRect();
shape =
pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle,
(float)rect.getX() + (float)x, (float)rect.getY() + (float)y, (float)rect.getWidth(), (float)rect.getHeight());
shape.getFillFormat().setFillType(FillType.NoFill);
}
}
}
} finally {
if (pres != null) pres.dispose();
}
FAQ
I vilka enheter returneras koordinaterna för ett stycke och textdelar?
I punkter, där 1 tum = 72 punkter. Detta gäller för alla koordinater och dimensioner på bilden.
Påverkar ordomslag ett styckes gränser?
Ja. Om wrapping är aktiverat i TextFrame, bryts texten för att passa områdets bredd, vilket ändrar styckets faktiska gränser.
Kan stycke‑koordinater på ett pålitligt sätt mappas till pixlar i den exporterade bilden?
Ja. Konvertera punkter till pixlar med: pixels = points × (DPI / 72). Resultatet beror på DPI som valts för rendering/export.
Hur får jag de “effektiva” stycke‑formateringsparametrarna med hänsyn till stilarv?
Använd den effektiva stycke‑formateringsdatastrukturen; den returnerar de slutgiltiga konsoliderade värdena för indrag, avstånd, omslag, RTL och mer.