Bekezdés határainak lekérése prezentációkból Pythonban Java segítségével

Áttekintés

Ez a cikk azt mutatja be, hogyan lehet lekérni a bekezdések határait, méretét és koordinátáit az Aspose.Slides-ban. Bemutatja, hogyan lehet egy bekezdés téglalapját megszerezni egy TextFrame segítségével a Paragraph.getRect használatával, hogyan lehet a bekezdés koordinátáit egy táblázatcella szövegkereten belül lekérni, valamint kiemeli a fontos részleteket, például a mérési egységeket, a szöveg tördelésének hatását a határokra, a pixel átalakítást és a hatékony bekezdésformázási értékeket.

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

Használja a Paragraph.getRect metódust a bekezdés körülhatároló téglalapjának lekéréséhez.

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

Bekezdés méretének lekérése egy táblázatcella szövegkereten belül

A Paragraph méretének és koordinátáinak lekéréséhez egy táblázatcella szövegkereten belül, használja a Paragraph.getRect metódust. A visszaadott téglalap a táblázatcella szövegkerethez relatív, ezért adja hozzá a tábla pozícióját és a cella eltolását, ha diánivel szintű koordinátákra van szüksége.

Az alábbi példa a bekezdés határait lekéri egy táblázatcella belsejében, és téglalapokat rajzol a diához, hogy megjelenítse ezeket a határokat:

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

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

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

A szó megtörése befolyásolja a bekezdés határait?

Igen. Ha a TextFrameFormat.setWrapText 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 pixelekre az exportált képen?

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

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

Használja a effective paragraph formatting data structure elemet; ez visszaadja a végső, egyesített értékeket a behúzásokra, távolságokra, tördelésre, RTL-re és egyéb beállításokra.