Vấn đề Xem trước Đối tượng Khi Thêm OleObjectFrame
Giới thiệu
Khi bạn sử dụng Aspose.Slides cho C++ và thêm OleObjectFrame vào một slide, một tin nhắn “EMBEDDED OLE OBJECT” sẽ xuất hiện trên slide kết quả. Tin nhắn này là có chủ đích và KHÔNG phải là lỗi.
Để biết thêm thông tin về cách làm việc với các đối tượng OLE, hãy xem Manage OLE.
Giải thích và Giải pháp
Aspose.Slides hiển thị tin nhắn “EMBEDDED OLE OBJECT” để thông báo rằng đối tượng OLE đã bị thay đổi và hình ảnh xem trước cần được cập nhật.
Ví dụ, nếu bạn thêm một biểu đồ Microsoft Excel dưới dạng OleObjectFrame vào một slide (để biết chi tiết, xem bài viết “Manage OLE”) và sau đó mở bản trình chiếu bằng Microsoft PowerPoint, bạn sẽ thấy hình ảnh sau trên slide:

Nếu bạn muốn kiểm tra và xác nhận rằng đối tượng OLE đã được thêm vào slide, bạn phải nhấp đúp vào tin nhắn “EMBEDDED OLE OBJECT”, hoặc nhấp chuột phải vào nó và chọn Object > Edit.

PowerPoint sẽ mở đối tượng OLE được nhúng.

Slide có thể vẫn giữ lại tin nhắn “EMBEDDED OLE OBJECT”. Khi bạn nhấp vào đối tượng OLE, hình ảnh xem trước của slide sẽ được cập nhật và tin nhắn “EMBEDDED OLE OBJECT” sẽ được thay thế bằng hình ảnh thực tế của đối tượng OLE.

Bây giờ, bạn có thể muốn lưu bản trình chiếu để đảm bảo hình ảnh cho Đối tượng OLE được cập nhật đúng cách. Khi lưu bản trình chiếu và mở lại lần nữa, bạn sẽ KHÔNG thấy tin nhắn “EMBEDDED OLE OBJECT”.
Các giải pháp khác
Giải pháp 1: Thay thế tin nhắn “Embedded OLE Object” bằng một hình ảnh
Nếu bạn không muốn loại bỏ tin nhắn “EMBEDDED OLE OBJECT” bằng cách mở bản trình chiếu trong PowerPoint rồi lưu lại, bạn có thể thay thế tin nhắn bằng hình ảnh xem trước mà bạn muốn. Các dòng mã sau minh họa quy trình:
auto presentation = MakeObject<Presentation>(u"embeddedOLE.pptx");
auto slide = presentation->get_Slide(0);
auto oleFrame = ExplicitCast<IOleObjectFrame>(slide->get_Shape(0));
// Add an image to presentation resources.
auto imageStream = File::OpenRead(u"myImage.png");
auto oleImage = presentation->get_Images()->AddImage(imageStream);
imageStream->Dispose();
// Set a title and the image for the OLE object preview.
oleFrame->set_SubstitutePictureTitle(u"My title");
oleFrame->get_SubstitutePictureFormat()->get_Picture()->set_Image(oleImage);
oleFrame->set_IsObjectIcon(false);
presentation->Save(u"embeddedOLE-newImage.pptx", SaveFormat::Pptx);
presentation->Dispose();
Slide chứa OleObjectFrame sẽ thay đổi thành:

Giải pháp 2: Tạo Add-On cho PowerPoint
Bạn cũng có thể tạo một add‑on cho Microsoft PowerPoint để cập nhật tất cả các đối tượng OLE khi mở bản trình chiếu trong chương trình.