Bekezdéshatárok lekérése prezentációkból Pythonban

Áttekintés

Ez a cikk bemutatja, hogyan lehet lekérni a bekezdések határait, méretét és koordinátáit az Aspose.Slides-ban. Megmutatja, hogyan lehet egy bekezdés téglalapját lekérni egy TextFrame segítségével a Paragraph.get_rect, hogyan lehet a táblázatcella szövegkeretben lévő bekezdés koordinátáit megkapni, és kiemeli a fontos részleteket, például a mérési egységeket, a szövegcsomagolás hatását a határokra, a pixelkonverziót és a hatékony bekezdésformázási értékeket.

Bekezdés téglalap koordinátáinak lekérése

Használja a Paragraph.get_rect függvényt a bekezdés körülíró téglalapjának lekéréséhez.

import aspose.slides as slides

with slides.Presentation("Shapes.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]
    paragraph = shape.text_frame.paragraphs[0]
    rectangle = paragraph.get_rect()

Bekezdés méretének lekérése egy táblázatcella szövegkeretben

Az Paragraph méretének és koordinátáinak lekéréséhez egy táblázatcella szövegkeretben, használja a Paragraph.get_rect-t. A visszaadott téglalap a táblázatcella szövegkerethez relatív, ezért a diá szintű koordinátákhoz adja hozzá a táblázat pozícióját és a cella eltolását.

A következő példa lekéri a bekezdés határait egy táblázatcellán belül, és téglalapokat rajzol a diára a határok megjelenítéséhez:

import aspose.slides as slides
import aspose.pydrawing as draw

with slides.Presentation("source.pptx") as presentation:
    slide = presentation.slides[0]
    table = slide.shapes[0]
    cell = table.rows[1][1]

    cell_x = table.x + cell.offset_x
    cell_y = table.y + cell.offset_y

    for paragraph in cell.text_frame.paragraphs:
        if paragraph.text == "":
            continue

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

        paragraph_bounds_shape = slide.shapes.add_auto_shape(
            slides.ShapeType.RECTANGLE,
            paragraph_rectangle_x,
            paragraph_rectangle_y,
            paragraph_rectangle.width,
            paragraph_rectangle.height)

        paragraph_bounds_shape.fill_format.fill_type = slides.FillType.NO_FILL
        paragraph_bounds_shape.line_format.fill_format.solid_fill_color.color = draw.Color.yellow
        paragraph_bounds_shape.line_format.fill_format.fill_type = slides.FillType.SOLID

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

GYIK

Milyen egységben mérik a bekezdés koordinátáit?

A pontban (points) mérik, ahol 1 hüvelyk = 72 pont. Ez minden koordinátára és méretre érvényes a dián.

A szövegeltakarás befolyásolja a bekezdés határait?

Igen. Ha a TextFrameFormat.wrap_text engedélyezve van a TextFrame számára, a szöveg megtörik, hogy illeszkedjen a terület szélességéhez, ami megváltoztatja a bekezdés tényleges határait.

A bekezdés koordinátái megbízhatóan leképezhetők a pixelre az exportált képen?

Igen. A pontokat pixelekre a következő képlettel alakíthatja át: pixel = pont × (DPI / 72). Az eredmény a rendereléshez vagy exportáláshoz választott DPI-től függ.

Hogyan kapom meg a “hatékony” bekezdésformázási paramétereket, figyelembe véve a stílusöröklődést?

Használja a hatékony bekezdésformázási adatstruktúra-t; ez visszaadja a behúzások, sorok közti távolság, tördelés, jobbról balra írás és egyéb beállítások végső, egyesített értékeit.