Kaip pridėti formas į PowerPoint naudojant Python

Kaip pridėti formas į PowerPoint naudojant Python

Aspose.Slides FOSS for Python palaiko pridėti AutoShapes, Tables, Connectors ir PictureFrames į pristatymo skaidres. Visi formų tipai pridedami per slide.shapes kolekciją.

Žingsnis po žingsnio vadovas

Žingsnis 1: įdiekite paketą

pip install aspose-slides-foss

Patikrinkite diegimą:

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

Žingsnis 2: Sukurti prezentaciją

Visada naudokite Presentation kaip kontekstų tvarkyklę.

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)

Žingsnis 3: pridėti AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) patalpina formą nurodytoje pozicijoje ir dydyje (visi taškais). Naudokite ShapeType konstantas, kad pasirinktumėte formą.

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)

Žingsnis 4: Pridėti lentelę

slide.shapes.add_table(x, y, col_widths, row_heights) sukuria lentelę nurodytoje vietoje. Stulpelių plotiai ir eilučių aukščiai yra taškų verčių sąrašai.

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)

Žingsnis 5: Pridėti jungtį

Jungikliai vizualiai sujungia dvi figūras. Pirma sukurkite figūras, tada pridėkite jungiklį ir nustatykite jo pradžios ir pabaigos prisijungimo taškus.

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)

Jungties vietų indeksai yra numeruoti 0–3 stačiakampiui: viršus=0, kairė=1, apačia=2, dešinė=3.


Žingsnis 6: Pridėti paveikslėlio rėmelį

Įterpkite paveikslėlį ir pridėkite jį į skaidrę kaip PictureFrame. Pirma perskaitykite paveikslėlio baitus, pridėkite juos į pristatymo vaizdų kolekciją, tada sukurkite rėmelį.

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)

Dažnos problemos ir sprendimai

Figūra atsiranda už matomo skaidrės ploto

Skaidrės pagal numatytuosius nustatymus yra 720 × 540 taškų. x arba y reikšmės, viršijančios šias ribas, padeda figūrą už skaidrės ribų. Išlaikykite x < 720 ir y < 540, ir užtikrinkite x + width <= 720 ir y + height <= 540.

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

add_auto_shape() tiesiogiai grąžina formos objektą. Jei matote None, patikrinkite, ar neatsikratote grąžinamos vertės.

Lentelės langelio tekstas po priskyrimo yra tuščias

Teisinga savybė yra .text_frame.text (ne .text tiesiogiai ląstelėje). Pasiekite ląsteles kaip table.rows[row_index][col_index].text_frame.text = "value".


Dažnai užduodami klausimai

Kiek figūrų galiu pridėti į skaidrę?

Nėra bibliotekos nustatyto apribojimo. Praktiniai apribojimai priklauso nuo failo dydžio ir jūsų tikslo PPTX peržiūros programos atvaizdavimo galimybių.

Ar galiu pakeisti figūros padėtį po jos pridėjimo?

Taip. Formos objektas, kurį grąžina add_auto_shape(), turi x, y, width ir height savybes, kurias galite nustatyti:

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

Ar galiu nustatyti figūros kontūro (rėmo) spalvą?

Taip, per 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)

Ar diagramos palaikomos?

Ne. Diagramos, SmartArt ir OLE objektai šioje versijoje neįgyvendinti ir sukelia NotImplementedError.


Žr. taip pat

 Lietuvių