Hur man lägger till former i PowerPoint med Python
Aspose.Slides FOSS för Python stöder att lägga till AutoShapes, Tables, Connectors och PictureFrames till presentationsbilder. Alla formtyper läggs till via slide.shapes-samlingen.
Steg-för-steg-guide
Steg 1: Installera paketet
pip install aspose-slides-fossVerifiera installationen:
import aspose.slides_foss as slides
print("Ready")Steg 2: Skapa en presentation
Använd alltid Presentation som en kontext‑hanterare.
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)Steg 3: Lägg till en AutoShape
slide.shapes.add_auto_shape(shape_type, x, y, width, height) placerar en form på den angivna positionen och storleken (alla i punkter). Använd ShapeType‑konstanter för att välja 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: Lägg till en tabell
slide.shapes.add_table(x, y, col_widths, row_heights) skapar en tabell på den angivna positionen. Kolumnbredder och radhöjder är listor med punktvärden.
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: Lägg till en anslutning
Kopplingar länkar två former visuellt. Skapa formerna först, lägg sedan till en koppling och ange dess start- och slutanslutningspunkter.
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)Anslutningsplatsindex är numrerade 0–3 för en rektangel: top=0, left=1, bottom=2, right=3.
Steg 6: Lägg till en bildram
Bädda in en bild och lägg till den på bilden som en PictureFrame. Läs först bildens byte, lägg till dem i presentationens bildsamling och skapa sedan ramen.
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)Vanliga problem och lösningar
Formen visas utanför det synliga bildområdet
Slides är 720 × 540 punkter som standard. Värden för x eller y utanför dessa gränser placerar formen utanför bilden. Behåll x < 720 och y < 540, och säkerställ x + width <= 720 och y + height <= 540.
AttributeError: 'NoneType' object has no attribute 'text_frame'
add_auto_shape() returnerar shape‑objektet direkt. Om du ser None, kontrollera att du inte kastar bort returvärdet.
Tabellcellens text är tom efter tilldelning
Den korrekta egenskapen är .text_frame.text (inte .text direkt på cellen). Få åtkomst till celler som table.rows[row_index][col_index].text_frame.text = "value".
Vanliga frågor
Hur många former kan jag lägga till på en bild?
Det finns ingen begränsning som påläggs av biblioteket. Praktiska begränsningar beror på filstorlek och renderingskapaciteten hos din mål‑PPTX‑visare.
Kan jag ändra en formens position efter att ha lagt till den?
Ja. Shape‑objektet som returneras av add_auto_shape() har x, y, width och height egenskaper som du kan ställa in:
shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80Kan jag ange färgen på formens kontur (ram)?
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)Är diagram stödda?
Nej. Diagram, SmartArt och OLE‑objekt är inte implementerade i den här utgåvan och ger NotImplementedError.