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.