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-fossBekreft 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 = 80Kan 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.