Проблема предварительного просмотра при добавлении OleObjectFrame

Введение

При работе с Aspose.Slides for Java, когда вы добавляете OleObjectFrame на слайд, на полученном слайде отображается сообщение «EMBEDDED OLE OBJECT». Это сообщение является намеренным и НЕ является ошибкой.

Для получения дополнительной информации о работе с OLE‑объектами см. Manage OLE.

Объяснение и решение

Aspose.Slides выводит сообщение «EMBEDDED OLE OBJECT», чтобы уведомить вас о том, что OLE‑объект был изменён и требуется обновить изображение‑превью.

Например, если вы добавляете диаграмму Microsoft Excel в виде OleObjectFrame на слайд (подробности см. в статье «Manage OLE»), а затем открываете презентацию в Microsoft PowerPoint, вы увидите следующее изображение на слайде:

OLE object message

Если вы хотите проверить и подтвердить, что ваш OLE‑объект был добавлен на слайд, необходимо дважды щёлкнуть по сообщению «EMBEDDED OLE OBJECT», либо щёлкнуть правой кнопкой мыши и выбрать пункт Object > Edit.

OLE object > Edit

PowerPoint откроет встроенный OLE‑объект.

OLE object data

Слайд может сохранять сообщение «EMBEDDED OLE OBJECT». После щелчка по OLE‑объекту превью слайда обновляется, и сообщение «EMBEDDED OLE OBJECT» заменяется настоящим изображением OLE‑объекта.

OLE object preview

Теперь вы можете сохранить презентацию, чтобы удостовериться, что изображение OLE‑объекта обновилось правильно. Таким образом, после сохранения и повторного открытия презентации вы НЕ увидите сообщение «EMBEDDED OLE OBJECT».

Другой способ

Если вы не хотите удалять сообщение «EMBEDDED OLE OBJECT», открывая презентацию в PowerPoint и затем сохраняя её, вы можете заменить сообщение на желаемое изображение‑превью. Следующие строки кода демонстрируют процесс:

import com.aspose.slides.*;

Presentation presentation = new Presentation("embeddedOLE.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IOleObjectFrame oleFrame = (IOleObjectFrame) slide.getShapes().get_Item(0);

    // Добавить изображение в ресурсы презентации.
    IImage image = Images.fromFile("myImage.png");
    IPPImage oleImage = presentation.getImages().addImage(image);

    // Установить заголовок и изображение для предварительного просмотра OLE‑объекта.
    oleFrame.setSubstitutePictureTitle("My title");
    oleFrame.getSubstitutePictureFormat().getPicture().setImage(oleImage);
    oleFrame.setObjectIcon(false);

    presentation.save("embeddedOLE-newImage.pptx", SaveFormat.Pptx);
} finally {
    if (presentation != null) presentation.dispose();    
}

Слайд, содержащий OleObjectFrame, затем изменяется на следующее:

New OLE object image