Haal alinea-grenzen op uit presentaties in Python via Java

Overzicht

Dit artikel legt uit hoe u de grenzen, grootte en coördinaten van alinea’s in Aspose.Slides kunt ophalen. Het laat zien hoe u een alinea‑rectangle kunt ophalen uit een TextFrame met behulp van Paragraph.getRect, hoe u de alinea‑coördinaten binnen een tabelcel‑tekstframe kunt krijgen, en belicht belangrijke details zoals meeteenheden, het effect van tekstomslag op de grenzen, pixelconversie en effectieve alinea‑opmaakwaarden.

Haal rechthoekige coördinaten van een alinea op

Gebruik Paragraph.getRect om de begrenzende rechthoek van een alinea op te halen.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Shapes.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)
    paragraph = shape.getTextFrame().getParagraphs().get_Item(0)
    rectangle = paragraph.getRect()
finally:
    presentation.dispose()

Haal de grootte van een alinea op binnen een tabelcel‑tekstframe

Om de grootte en coördinaten van een Paragraph in een tabelcel‑tekstframe te krijgen, gebruikt u Paragraph.getRect. De geretourneerde rechthoek is relatief ten opzichte van het tabelcel‑tekstframe, dus voeg de tabelpositie en celoffset toe wanneer u coördinaten op dia‑niveau nodig hebt.

Het volgende voorbeeld haalt de alinea‑grenzen op binnen een tabelcel en tekent rechthoeken op de dia om die grenzen te visualiseren:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, Presentation, SaveFormat, ShapeType
from java.awt import Color

presentation = Presentation("source.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    table = slide.getShapes().get_Item(0)
    cell = table.getRows().get_Item(1).get_Item(1)

    cell_x = table.getX() + cell.getOffsetX()
    cell_y = table.getY() + cell.getOffsetY()

    for paragraph in cell.getTextFrame().getParagraphs():
        if not paragraph.getText():
            continue

        paragraph_rectangle = paragraph.getRect()
        paragraph_rectangle_x = paragraph_rectangle.x + cell_x
        paragraph_rectangle_y = paragraph_rectangle.y + cell_y

        paragraph_bounds_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, paragraph_rectangle_x, paragraph_rectangle_y, paragraph_rectangle.width, paragraph_rectangle.height)

        paragraph_bounds_shape.getFillFormat().setFillType(FillType.NoFill)
        paragraph_bounds_shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.YELLOW)
        paragraph_bounds_shape.getLineFormat().getFillFormat().setFillType(FillType.Solid)

    presentation.save("output.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Veelgestelde vragen

In welke eenheden worden de alinea‑coördinaten gemeten?

Ze worden gemeten in punten, waarbij 1 inch gelijk is aan 72 punten. Dit geldt voor alle coördinaten en afmetingen op de dia.

Heeft tekstomslag invloed op de grenzen van een alinea?

Ja. Als TextFrameFormat.setWrapText is ingeschakeld voor het TextFrame, breekt de tekst om binnen de breedte van het gebied, waardoor de werkelijke grenzen van de alinea wijzigen.

Kunnen alinea‑coördinaten betrouwbaar worden omgezet naar pixels in de geëxporteerde afbeelding?

Ja. Zet punten om naar pixels met deze formule: pixels = points × (DPI / 72). Het resultaat hangt af van de DPI die is gekozen voor renderen of exporteren.

Hoe krijg ik de “effectieve” alinea‑opmaakparameters, rekening houdend met stijl‑overerving?

Gebruik de effective paragraph formatting data structure; deze geeft de uiteindelijke geconsolideerde waarden terug voor inspringingen, spatiëring, omhulling, RTL en meer.