Absatzgrenzen aus Präsentationen in Python über Java abrufen
Übersicht
Dieser Artikel erklärt, wie man die Grenzen, die Größe und die Koordinaten von Absätzen in Aspose.Slides ermittelt. Er zeigt, wie man ein Absatzrechteck aus einem TextFrame über Paragraph.getRect abruft, wie man Absatzkoordinaten innerhalb eines TextFrames einer Tabellenzelle erhält und hebt wichtige Details wie Messeinheiten, den Einfluss von Textumbruch auf die Grenzen, die Pixelumrechnung und effektive Absatzformatierungswerte hervor.
Rechteckige Koordinaten eines Absatzes abrufen
Verwenden Sie Paragraph.getRect, um das begrenzende Rechteck eines Absatzes zu erhalten.
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()
Größe eines Absatzes in einem TextFrame einer Tabellenzelle ermitteln
Um die Größe und die Koordinaten eines Paragraph in einem TextFrame einer Tabellenzelle zu erhalten, verwenden Sie Paragraph.getRect. Das zurückgegebene Rechteck ist relativ zum TextFrame der Tabellenzelle, sodass Sie die Tabellenposition und den Zellenoffset hinzufügen müssen, wenn Sie Folien‑bezogene Koordinaten benötigen.
Das folgende Beispiel ermittelt die Absatzgrenzen innerhalb einer Tabellenzelle und zeichnet Rechtecke auf der Folie, um diese Grenzen zu visualisieren:
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()
FAQ
In welchen Einheiten werden Absatzkoordinaten gemessen?
Sie werden in Punkten gemessen, wobei 1 Zoll 72 Punkten entspricht. Dies gilt für alle Koordinaten und Abmessungen auf der Folie.
Wirkt sich der Textumbruch auf die Grenzen eines Absatzes aus?
Ja. Wenn TextFrameFormat.setWrapText für den TextFrame aktiviert ist, wird der Text umbrochen, um die Breite des Bereichs zu füllen, wodurch sich die tatsächlichen Grenzen des Absatzes ändern.
Können Absatzkoordinaten zuverlässig in Pixel im exportierten Bild umgerechnet werden?
Ja. Punkte können mit folgender Formel in Pixel umgerechnet werden: pixel = punkte × (DPI / 72). Das Ergebnis hängt vom für die Darstellung oder den Export gewählten DPI ab.
Wie erhalte ich die „effektiven“ Absatzformatierungsparameter unter Berücksichtigung der Stilvererbung?
Verwenden Sie die effective paragraph formatting data structure; sie gibt die endgültigen zusammengefassten Werte für Einzüge, Abstand, Umbruch, RTL und mehr zurück.