Πώς να προσθέσετε σχήματα στο PowerPoint με Python

Πώς να προσθέσετε σχήματα στο PowerPoint με Python

Aspose.Slides FOSS for Python υποστηρίζει την προσθήκη AutoShapes, Tables, Connectors και PictureFrames σε διαφάνειες παρουσίασης. Όλοι οι τύποι σχημάτων προστίθενται μέσω της συλλογής slide.shapes.

Οδηγός βήμα προς βήμα

Βήμα 1: Εγκατάσταση του πακέτου

pip install aspose-slides-foss

Επαληθεύστε την εγκατάσταση:

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

Βήμα 2: Δημιουργία παρουσίασης

Πάντα χρησιμοποιήστε Presentation ως διαχειριστή περιβάλλοντος.

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: Προσθήκη AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) τοποθετεί ένα σχήμα στη δεδομένη θέση και μέγεθος (όλα σε σημεία). Χρησιμοποιήστε τις σταθερές ShapeType για να επιλέξετε το σχήμα.

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)

Βήμα 4: Προσθήκη πίνακα

slide.shapes.add_table(x, y, col_widths, row_heights) δημιουργεί έναν πίνακα στην καθορισμένη θέση. Τα πλάτη των στηλών και τα ύψη των γραμμών είναι λίστες τιμών σημείου.

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)

Βήμα 5: Προσθήκη συνδέσμου

Οι συνδέτες συνδέουν δύο σχήματα οπτικά. Δημιουργήστε πρώτα τα σχήματα, στη συνέχεια προσθέστε έναν σύνδεσμο και ορίστε τα σημεία έναρξης και λήξης του.

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)

Οι δείκτες των σημείων σύνδεσης αριθμούνται 0–3 για ένα ορθογώνιο: πάνω=0, αριστερά=1, κάτω=2, δεξιά=3.


Βήμα 6: Προσθήκη πλαισίου εικόνας

Ενσωματώστε μια εικόνα και προσθέστε την στη διαφάνεια ως PictureFrame. Διαβάστε πρώτα τα bytes της εικόνας, προσθέστε τα στη συλλογή εικόνων της παρουσίασης, στη συνέχεια δημιουργήστε το πλαίσιο.

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)

Κοινά προβλήματα και διορθώσεις

Το σχήμα εμφανίζεται εκτός της ορατής περιοχής της διαφάνειας

Οι διαφάνειες είναι προεπιλεγμένα 720 × 540 σημεία. Οι τιμές του x ή του y εκτός αυτών των ορίων τοποθετούν το σχήμα εκτός διαφάνειας. Διατηρήστε x < 720 και y < 540, και εξασφαλίστε x + width <= 720 και y + height <= 540.

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

add_auto_shape() επιστρέφει το αντικείμενο σχήματος άμεσα. Εάν δείτε None, ελέγξτε ότι δεν απορρίπτετε την τιμή επιστροφής.

Το κείμενο του κελιού του πίνακα είναι κενό μετά την ανάθεση

Η σωστή ιδιότητα είναι .text_frame.text (όχι .text απευθείας στο κελί). Πρόσβαση στα κελιά ως table.rows[row_index][col_index].text_frame.text = "value".


Συχνές Ερωτήσεις

Πόσα σχήματα μπορώ να προσθέσω σε μια διαφάνεια;

Δεν υπάρχει περιορισμός που να επιβάλλεται από τη βιβλιοθήκη. Οι πρακτικοί περιορισμοί εξαρτώνται από το μέγεθος του αρχείου και την ικανότητα απόδοσης του προγράμματος προβολής PPTX-στόχου.

Μπορώ να αλλάξω τη θέση ενός σχήματος μετά την προσθήκη του;

Ναι. Το αντικείμενο σχήματος που επιστρέφεται από add_auto_shape() έχει τις ιδιότητες x, y, width και height που μπορείτε να ορίσετε:

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

Μπορώ να ορίσω το χρώμα περιγράμματος (border) του σχήματος;

Ναι, μέσω 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)

Υποστηρίζονται τα διαγράμματα;

Όχι. Τα διαγράμματα, το SmartArt και τα αντικείμενα OLE δεν έχουν υλοποιηθεί σε αυτήν την έκδοση και προκαλούν NotImplementedError.


Δείτε επίσης

 Ελληνικά