Získání ohraničení odstavců z prezentací v Pythonu přes Java

Přehled

Tento článek vysvětluje, jak získat ohraničení, velikost a souřadnice odstavců v Aspose.Slides. Ukazuje, jak získat obdélník odstavce z TextFrame pomocí Paragraph.getRect, jak získat souřadnice odstavce uvnitř textového rámce buňky tabulky, a zdůrazňuje důležité podrobnosti, jako jsou jednotky měření, vliv zalamování textu na ohraničení, převod do pixelů a hodnoty efektivního formátování odstavce.

Získání obdélníkových souřadnic odstavce

Použijte Paragraph.getRect k získání ohraničujícího obdélníku odstavce.

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()

Získání velikosti odstavce uvnitř textového rámce buňky tabulky

Chcete-li získat velikost a souřadnice Paragraph v textovém rámci buňky tabulky, použijte Paragraph.getRect. Vrácený obdélník je relativní k textovému rámci buňky tabulky, takže pokud potřebujete souřadnice na úrovni snímku, přidejte pozici tabulky a posun buňky.

Následující příklad získá ohraničení odstavce uvnitř buňky tabulky a nakreslí obdélníky na snímku pro vizualizaci těchto ohraničení:

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()

Často kladené otázky

V jakých jednotkách jsou měřeny souřadnice odstavce?

Měří se v bodech, kde 1 palec odpovídá 72 bodům. Týká se to všech souřadnic a rozměrů na snímku.

Ovlivňuje zalamování textu ohraničení odstavce?

Ano. Pokud je pro TextFrame povoleno TextFrameFormat.setWrapText, text se láme tak, aby se vešel do šířky oblasti, což mění skutečné ohraničení odstavce.

Lze souřadnice odstavce spolehlivě převést na pixely v exportovaném obrázku?

Ano. Převádějte body na pixely pomocí vzorce: pixely = body × (DPI / 72). Výsledek závisí na DPI zvoleném pro vykreslení nebo export.

Jak získám „efektivní“ parametry formátování odstavce s ohledem na dědičnost stylu?

Použijte effective paragraph formatting data structure; vrací konečné konsolidované hodnoty pro odsazení, mezery, zalamování, RTL a další.