Kā pievienot formas PowerPoint prezentācijai Python valodā

Kā pievienot formas PowerPoint prezentācijai Python valodā

Aspose.Slides FOSS for Python atbalsta AutoShapes, Tables, Connectors un PictureFrames pievienošanu prezentācijas slaidiem. Visi formu veidi tiek pievienoti, izmantojot slide.shapes kolekciju.

Solī pa solim ceļvedis

1. solis: instalēt pakotni

pip install aspose-slides-foss

Pārbaudiet instalāciju:

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

2. solis: Izveidot prezentāciju

Vienmēr izmantojiet Presentation kā konteksta pārvaldnieku.

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)

3. solis: Pievienot AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) novieto formu dotajā pozīcijā un izmērā (visi punktos). Izmantojiet ShapeType konstantes, lai izvēlētos formu.

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)

Solis 4: Pievienot tabulu

slide.shapes.add_table(x, y, col_widths, row_heights) izveido tabulu norādītā pozīcijā. Kolonnu platumi un rindu augstumi ir punktu vērtību saraksti.

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)

Solis 5: Pievienot savienotāju

Savienotāji vizuāli savieno divas formas. Vispirms izveidojiet formas, pēc tam pievienojiet savienotāju un iestatiet tā sākuma un beigu savienojuma punktus.

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)

Savienojuma vietas indeksi ir numurēti 0–3 taisnstūrim: augšā=0, pa kreisi=1, apakšā=2, pa labi=3.


Solis 6: Pievienot attēla rāmi

Iegult attēlu un pievienojiet to slaidam kā PictureFrame. Vispirms nolasiet attēla baitus, pievienojiet tos prezentācijas attēlu kolekcijai, tad izveidojiet rāmi.

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)

Vispārējās problēmas un risinājumi

Forma parādās ārpus redzamās slaida zonas

Slaidi pēc noklusējuma ir 720 × 540 punkti. x vai y vērtības, kas pārsniedz šos robežus, novieto formu ārpus slaida. Saglabājiet x < 720 un y < 540, un pārliecinieties, ka x + width <= 720 un y + height <= 540.

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

add_auto_shape() atgriež formas objektu tieši. Ja redzat None, pārbaudiet, vai neatmetat atgriezto vērtību.

Tabulas šūnas teksts ir tukšs pēc piešķiršanas

Pareizais īpašums ir .text_frame.text (nevis .text tieši uz šūnas). Piekļūstiet šūnām kā table.rows[row_index][col_index].text_frame.text = "value".


Biežāk uzdotie jautājumi

Cik daudz formu var pievienot slaidam?

Nav bibliotēkas noteikta ierobežojuma. Praktiskie ierobežojumi ir atkarīgi no faila lieluma un jūsu mērķa PPTX skatītāja renderēšanas iespējas.

Vai es varu mainīt formas pozīciju pēc tās pievienošanas?

Jā. Forma objekts, ko atgriež add_auto_shape(), ir ar x, y, width un height īpašībām, kuras varat iestatīt:

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

Vai es varu iestatīt formas kontūras (malas) krāsu?

Jā, caur 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)

Vai diagrammas tiek atbalstītas?

Nē. Diagrammas, SmartArt un OLE objekti nav ieviesti šajā izdevumā un izraisa NotImplementedError.


Skatīt arī

 Latviešu