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:

Zpráva OLE objektu

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.

OLE objekt > Upravit

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

Data OLE objektu

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.

Náhled 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:

Nový obrázek OLE objektu

Ř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.