Πώς να προσθέσετε σχήματα στο 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.