Problem z podglądem obiektu przy dodawaniu OleObjectFrame

Wprowadzenie

Używając Aspose.Slides for C++, gdy dodajesz OleObjectFrame do slajdu, na wyjściowym slajdzie pojawia się komunikat „EMBEDDED OLE OBJECT”. Ten komunikat jest zamierzony i nie jest błędem.

Aby uzyskać więcej informacji o pracy z obiektami OLE, zobacz Zarządzanie OLE.

Wyjaśnienie i rozwiązanie

Aspose.Slides wyświetla komunikat „EMBEDDED OLE OBJECT”, aby poinformować, że obiekt OLE został zmieniony i że podglądowy obraz musi zostać zaktualizowany.

Na przykład, jeśli dodasz wykres Microsoft Excel jako OleObjectFrame do slajdu (szczegóły w artykule „Zarządzanie OLE”), a następnie otworzysz prezentację w Microsoft PowerPoint, zobaczysz ten obraz na slajdzie:

OLE object message

Jeśli chcesz sprawdzić i potwierdzić, że obiekt OLE został dodany do slajdu, musisz dwukrotnie kliknąć komunikat „EMBEDDED OLE OBJECT” lub kliknąć go prawym przyciskiem myszy i wybrać Obiekt > Edytuj.

OLE object > Edit

PowerPoint otworzy wbudowany obiekt OLE.

OLE object data

Slajd może nadal wyświetlać komunikat „EMBEDDED OLE OBJECT”. Po kliknięciu obiektu OLE podgląd slajdu zostaje zaktualizowany, a komunikat zostaje zastąpiony rzeczywistym obrazem obiektu OLE.

OLE object preview

Teraz możesz zapisać prezentację, aby upewnić się, że obraz obiektu OLE został poprawnie zaktualizowany. Dzięki temu po ponownym otwarciu prezentacji nie zobaczysz komunikatu „EMBEDDED OLE OBJECT”.

Inne rozwiązania

Rozwiązanie 1: Zamiana komunikatu „Embedded OLE Object” na obraz

Jeśli nie chcesz usuwać komunikatu „EMBEDDED OLE OBJECT” otwierając prezentację w PowerPoint i zapisując ją, możesz zastąpić ten komunikat wybranym obrazem podglądu. Poniższe fragmenty kodu ilustrują proces:

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();

Slajd zawierający OleObjectFrame zostaje wtedy zmieniony na:

New OLE object image

Rozwiązanie 2: Utworzenie dodatku do PowerPoint

Możesz również stworzyć dodatek dla Microsoft PowerPoint, który aktualizuje wszystkie obiekty OLE podczas otwierania prezentacji w programie.