Cách Thêm Hình Dạng vào PowerPoint bằng Python
Aspose.Slides FOSS for Python hỗ trợ thêm AutoShapes, Tables, Connectors và PictureFrames vào các slide trình chiếu. Tất cả các loại hình dạng đều được thêm thông qua bộ sưu tập slide.shapes.
Hướng Dẫn Từng Bước
Bước 1: Cài đặt gói
pip install aspose-slides-fossXác minh việc cài đặt:
import aspose.slides_foss as slides
print("Ready")Bước 2: Tạo bản trình chiếu
Luôn sử dụng Presentation làm trình quản lý ngữ cảnh.
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)Bước 3: Thêm một AutoShape
slide.shapes.add_auto_shape(shape_type, x, y, width, height) đặt một hình dạng tại vị trí và kích thước đã cho (tất cả tính bằng điểm). Sử dụng các hằng số ShapeType để chọn hình dạng.
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)Bước 4: Thêm bảng
slide.shapes.add_table(x, y, col_widths, row_heights) tạo một bảng tại vị trí được chỉ định. Độ rộng cột và chiều cao hàng là các danh sách các giá trị điểm.
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)Bước 5: Thêm một Connector
Các kết nối liên kết hai hình dạng một cách trực quan. Đầu tiên tạo các hình dạng, sau đó thêm một kết nối và đặt các điểm kết nối bắt đầu và kết thúc của nó.
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)Các chỉ số vị trí kết nối được đánh số 0–3 cho một hình chữ nhật: top=0, left=1, bottom=2, right=3.
Bước 6: Thêm khung ảnh
Nhúng một hình ảnh và thêm nó vào slide dưới dạng PictureFrame. Đọc các byte của hình ảnh trước, thêm chúng vào bộ sưu tập hình ảnh của bản trình chiếu, sau đó tạo khung.
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)Các vấn đề thường gặp và cách khắc phục
Hình dạng xuất hiện ngoài khu vực slide có thể nhìn thấy
Các slide có kích thước mặc định là 720 × 540 điểm. Giá trị của x hoặc y vượt ra ngoài giới hạn này sẽ đặt hình dạng ra ngoài slide. Giữ x < 720 và y < 540, và đảm bảo x + width <= 720 và y + height <= 540.
AttributeError: 'NoneType' object has no attribute 'text_frame'
add_auto_shape() trả về đối tượng shape trực tiếp. Nếu bạn thấy None, hãy kiểm tra rằng bạn không bỏ qua giá trị trả về.
Nội dung ô bảng trống sau khi gán
Thuộc tính đúng là .text_frame.text (không phải .text trực tiếp trên ô). Truy cập các ô như table.rows[row_index][col_index].text_frame.text = "value".
Câu hỏi thường gặp
Tôi có thể thêm bao nhiêu hình dạng vào một slide?
Không có giới hạn do thư viện áp đặt. Giới hạn thực tế phụ thuộc vào kích thước tệp và khả năng hiển thị của trình xem PPTX mục tiêu của bạn.
Có thể thay đổi vị trí của hình dạng sau khi thêm nó không?
Có. Đối tượng shape được trả về bởi add_auto_shape() có các thuộc tính x, y, width và height mà bạn có thể thiết lập:
shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80Tôi có thể đặt màu viền (border) cho hình dạng không?
Có, thông qua 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)Biểu đồ có được hỗ trợ không?
Không. Biểu đồ, SmartArt và các đối tượng OLE không được triển khai trong phiên bản này và sẽ gây ra NotImplementedError.