Hvordan legge til former i PowerPoint med Python

Hvordan legge til former i PowerPoint med Python

Aspose.Slides FOSS for Python støtter å legge til AutoShapes, Tables, Connectors og PictureFrames til presentasjonslysbilder. Alle formtyper legges til gjennom slide.shapes-samlingen.

Steg-for-steg guide

Steg 1: Installer pakken

pip install aspose-slides-foss

Bekreft installasjonen:

import aspose.slides_foss as slides
print("Ready")

Trinn 2: Opprett en presentasjon

Bruk alltid Presentation som en kontekstbehandler.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX)

Trinn 3: Legg til en AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) plasserer en form på den gitte posisjonen og størrelsen (alle i punkter). Bruk ShapeType-konstanter for å velge formen.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle
    rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    rect.add_text_frame("Rectangle shape")

    # Ellipse
    ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 100)
    ellipse.add_text_frame("Ellipse shape")

    prs.save("autoshapes.pptx", SaveFormat.PPTX)

Steg 4: Legg til en tabell

slide.shapes.add_table(x, y, col_widths, row_heights) oppretter en tabell på den angitte posisjonen. Kolonnebredder og radhøyder er lister med punktverdier.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [150.0, 150.0, 150.0]
    row_heights = [40.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 200, col_widths, row_heights)

    # Set header row text
    headers = ["Product", "Units", "Revenue"]
    for col, text in enumerate(headers):
        table.rows[0][col].text_frame.text = text

    # Set data rows
    rows = [
        ["Widget A", "120", "$2,400"],
        ["Widget B", "85", "$1,700"],
    ]
    for row_idx, row_data in enumerate(rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("table.pptx", SaveFormat.PPTX)

Steg 5: Legg til en kobling

Koblinger kobler to former visuelt. Opprett formene først, deretter legg til en kobling og angi start‑ og sluttkoblingspunktene.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 100, 150, 60)
    box1.add_text_frame("Start")

    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 100, 150, 60)
    box2.add_text_frame("End")

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3  # right side of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1    # left side of box2

    prs.save("connector.pptx", SaveFormat.PPTX)

Tilkoblingsstedsindekser er nummerert 0–3 for et rektangel: top=0, left=1, bottom=2, right=3.


Trinn 6: Legg til en bildeleramme

Legg inn et bilde og legg det til lysbildet som en PictureFrame. Les bildebytesene først, legg dem til presentasjonens bildesamling, og opprett deretter rammen.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    with open("logo.png", "rb") as f:
        image_data = f.read()

    image = prs.images.add_image(image_data)

    slide = prs.slides[0]
    slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,  # bounding shape type
        50, 50,               # x, y in points
        200, 150,             # width, height in points
        image
    )

    prs.save("with-image.pptx", SaveFormat.PPTX)

Vanlige problemer og løsninger

Formen vises utenfor det synlige lysbildeområdet

Lysbilder er som standard 720 × 540 poeng. Verdier av x eller y utenfor disse grensene plasserer formen utenfor lysbildet. Behold x < 720 og y < 540, og sørg for x + width <= 720 og y + height <= 540.

AttributeError: 'NoneType' object has no attribute 'text_frame'

add_auto_shape() returnerer shape‑objektet direkte. Hvis du ser None, sjekk at du ikke forkaster returverdien.

Tabellcelletekst er tom etter tildeling

Den korrekte egenskapen er .text_frame.text (ikke .text direkte på cellen). Få tilgang til celler som table.rows[row_index][col_index].text_frame.text = "value".


Ofte stilte spørsmål

Hvor mange former kan jeg legge til på et lysbilde?

Det er ingen bibliotekpålagt grense. Praktiske begrensninger avhenger av filstørrelse og gjengivelsesevnen til din mål‑PPTX‑viser.

Kan jeg endre posisjonen til en figur etter at jeg har lagt den til?

Ja. Shape‑objektet som returneres av add_auto_shape() har x, y, width og height egenskaper som du kan sette:

shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80

Kan jeg sette fargen på figurens omriss (kant)?

Ja, via shape.line_format:

from aspose.slides_foss.drawing import Color
shape.line_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

Er diagrammer støttet?

Nei. Diagrammer, SmartArt og OLE‑objekter er ikke implementert i denne utgaven og gir NotImplementedError.


Se også

 Norsk