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

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

Aspose.Slides FOSS for Python supports adding AutoShapes, Tables, Connectors, and PictureFrames to presentation slides. All shape types are added through the 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.Διαβάστε πρώτα τα byte εικόνας, προσθέστε αυτά στη συλλογή εικόνων της παρουσίασης και στη συνέχεια δημιουργήστε το πλαίσιο.

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)

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

Η μορφή εμφανίζεται έξω από την ορατή περιοχή της σκιής

Τα Slides είναι 960 × 540 σημεία ανά προεπιλογή. x ή y πέρα από αυτά τα όρια τοποθετείται η μορφή off-slide. x < 960 και y < 540,και να εξασφαλίσει x + width <= 960 και 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".


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

Πόσες μορφές μπορώ να προσθέσω σε ένα σκι;?

Πρακτικά όρια εξαρτώνται από το μέγεθος του αρχείου και την ικανότητα rendering του στόχου σας PPTX προβολέας.

Μπορώ να αλλάξω τη θέση μιας μορφής μετά την προσθήκη της;?

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

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

Μπορώ να ορίσω το χρώμα του σχήματος (συνοριακό);?

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


Δείτε επίσης

 Ελληνικά