Problema de Objeto Cambiado al Agregar OleObjectFrame

Explicación y Solución

Aspose.Slides muestra el mensaje Objeto Cambiado para notificarte que el objeto OLE ha sido cambiado y la imagen de vista previa debe actualizarse.

Por ejemplo, si agregas un gráfico de Microsoft Excel como un OleObjectFrame a una diapositiva (para más detalles, consulta el artículo Gestionar OLE) y luego abres la presentación en la aplicación Microsoft PowerPoint, verás esta imagen en la diapositiva:

Reemplazar todas las imágenes por nuevas imágenes

todo:image_alt_text

Si deseas verificar y confirmar que tu objeto OLE fue agregado a la diapositiva, tienes que hacer doble clic en el mensaje Objeto Cambiado, o puedes hacer clic derecho en él y elegir la opción Objeto de Hoja de Cálculo > Editar.

todo:image_alt_text

PowerPoint abrirá entonces el objeto OLE incrustado.

todo:image_alt_text

La diapositiva puede conservar el mensaje Objeto Cambiado. Una vez que hagas clic en el objeto OLE, la vista previa de la diapositiva se actualiza y el mensaje Objeto Cambiado es reemplazado por la imagen real del objeto OLE.

todo:image_alt_text

Ahora, es posible que desees guardar tu presentación para asegurar que la imagen del Objeto OLE se actualice correctamente. De esta manera, después de guardar la presentación, cuando abras la presentación nuevamente, NO verás el mensaje Objeto Cambiado.

Otras Soluciones

Solución 1: Reemplazar el Mensaje de Objeto Cambiado con una Imagen

Si no deseas eliminar el mensaje Objeto Cambiado abriendo la presentación en PowerPoint y luego guardándola, puedes reemplazar el mensaje con tu imagen de vista previa preferida. Estas líneas de código demuestran el proceso:

using (Presentation pres = new Presentation("embeddedOle.pptx"))
{
   ISlide slide = pres.Slides[0];
   IOleObjectFrame oleObjectFrame = (IOleObjectFrame)slide.Shapes[0];
    
   IPPImage oleImage = pres.Images.AddImage(File.ReadAllBytes("my_image.png"));
   oleObjectFrame.SubstitutePictureTitle = "Mi título";
   oleObjectFrame.SubstitutePictureFormat.Picture.Image = oleImage;
   oleObjectFrame.IsObjectIcon = false;
    
   pres.Save("embeddedOle-newImage.pptx", SaveFormat.Pptx);
}

La diapositiva que contiene el OleObjectFrame cambia entonces a esto:

todo:image_alt_text

Solución 2: Crear un Complemento para PowerPoint

También puedes crear un complemento para Microsoft PowerPoint que actualice todos los objetos OLE cuando abras presentaciones en el programa.