Problém s náhledem objektu při přidání OleObjectFrame
Úvod
Při použití Aspose.Slides pro C++, když do snímku přidáte OleObjectFrame, zobrazí se na výstupním snímku zpráva „EMBEDDED OLE OBJECT“. Tato zpráva je úmyslná a NEJDE o chybu.
Další informace o práci s OLE objekty najdete v článku Spravovat OLE.
Vysvětlení a řešení
Aspose.Slides zobrazuje zprávu „EMBEDDED OLE OBJECT“, aby vás upozornil, že OLE objekt byl změněn a náhledový obrázek je třeba aktualizovat.
Například pokud do snímku přidáte graf Excelu jako OleObjectFrame (více podrobností v článku „Spravovat OLE“) a poté otevřete prezentaci v Microsoft PowerPoint, uvidíte na snímku tento obrázek:

Chcete‑li zkontrolovat a potvrdit, že byl OLE objekt přidán do snímku, musíte dvojkliknout na zprávu „EMBEDDED OLE OBJECT“ nebo na ni pravým tlačítkem vybrat Objekt > Upravit.

PowerPoint pak otevře vložený OLE objekt.

Snímek může zprávu „EMBEDDED OLE OBJECT“ zachovat. Jakmile však objekt OLE kliknete, náhled snímku se aktualizuje a zpráva „EMBEDDED OLE OBJECT“ je nahrazena skutečným obrázkem OLE objektu.

Nyní můžete prezentaci uložit, aby se obrázek OLE objektu správně aktualizoval. Po uložení a opětovném otevření prezentace už nebudete vidět zprávu „EMBEDDED OLE OBJECT“.
Další řešení
Řešení 1: Nahradit zprávu „Embedded OLE Object“ obrázkem
Pokud nechcete odstraňovat zprávu „EMBEDDED OLE OBJECT“ otevřením prezentace v PowerPointu a jejím uložením, můžete zprávu nahradit vámi preferovaným náhledovým obrázkem. Následující řádky kódu ukazují postup:
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();
Snímek obsahující OleObjectFrame pak vypadá takto:

Řešení 2: Vytvořit doplněk pro PowerPoint
Můžete také vytvořit doplněk pro Microsoft PowerPoint, který při otevření prezentací v programu aktualizuje všechny OLE objekty.