Kuinka lisätä muotoja PowerPointiin Pythonilla

Kuinka lisätä muotoja PowerPointiin Pythonilla

Aspose.Slides FOSS for Python tukee AutoShapes-, Tables-, Connectors- ja PictureFrames-objektien lisäämistä esitysdioihin. Kaikki muoto-tyypit lisätään slide.shapes-kokoelman kautta.

Vaiheittainen opas

Vaihe 1: Asenna paketti

pip install aspose-slides-foss

Vahvista asennus:

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

Vaihe 2: Luo esitys

Käytä aina Presentation kontekstinhallitsijana.

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)

Vaihe 3: Lisää AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) asettaa muodon annettuun sijaintiin ja kokoon (kaikki pisteinä). Käytä ShapeType vakioita muodon valitsemiseen.

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)

Vaihe 4: Lisää taulukko

slide.shapes.add_table(x, y, col_widths, row_heights) luo taulukon määritettyyn sijaintiin. Sarakkeiden leveydet ja rivien korkeudet ovat pistearvojen luetteloita.

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)

Vaihe 5: Lisää liitin

Liittimet yhdistävät kaksi muotoa visuaalisesti. Luo muodot ensin, sitten lisää liitin ja aseta sen aloitus‑ ja lopetuspisteet.

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)

Yhteyspisteiden indeksit on numeroitu 0–3 suorakulmiolle: ylä=0, vasen=1, ala=2, oikea=3.


Vaihe 6: Lisää kuvan kehys

Upota kuva ja lisää se diaan PictureFrame. Lue kuvan tavut ensin, lisää ne esityksen kuvakokoelmaan ja luo sitten kehys.

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)

Yleiset ongelmat ja korjaukset

Muoto näkyy näkyvän dian alueen ulkopuolella

Diat ovat oletuksena 720 × 540 pistettä. x‑ tai y‑arvot, jotka ylittävät nämä rajat, asettavat muodon dian ulkopuolelle. Säilytä x < 720 ja y < 540, ja varmista x + width <= 720 ja y + height <= 540.

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

add_auto_shape() palauttaa shape-objektin suoraan. Jos näet None, tarkista ettet hylkää palautusarvoa.

Taulukon solun teksti on tyhjä määrittämisen jälkeen

Oikea ominaisuus on .text_frame.text (ei .text suoraan solussa). Pääse soluihin käyttämällä table.rows[row_index][col_index].text_frame.text = "value".


Usein kysytyt kysymykset

Kuinka monta muotoa voin lisätä diaan?

Kirjaston asettamaa rajoitusta ei ole. Käytännön rajoitukset riippuvat tiedoston koosta ja kohde‑PPTX‑katselimen renderöintikyvystä.

Voinko muuttaa muodon sijaintia sen lisäämisen jälkeen?

Kyllä. add_auto_shape()-funktion palauttavalla shape-objektilla on x, y, width ja height-ominaisuudet, joita voit asettaa:

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

Voinko asettaa muodon ääriviivan (reunan) värin?

Kyllä, 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)

Tukeeko kaavioita?

Ei. Kaaviot, SmartArt ja OLE‑objektit eivät ole toteutettu tässä versiossa, ja ne aiheuttavat NotImplementedError.


Katso myös

 Suomi