Проблема превью объекта при добавлении OleObjectFrame

Введение

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

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

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

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

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

Сообщение OLE‑объекта

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

OLE‑объект > Edit

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

Данные OLE‑объекта

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

Превью OLE‑объекта

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

Другой способ решения

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Images, Presentation, SaveFormat

presentation = Presentation("embeddedOLE.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    ole_frame = slide.getShapes().get_Item(0)

    # Добавить изображение в ресурсы презентации.
    image = Images.fromFile("myImage.png")
    try:
        ole_image = presentation.getImages().addImage(image)
    finally:
        image.dispose()

    # Установить заголовок и изображение для превью OLE‑объекта.
    ole_frame.setSubstitutePictureTitle("My title")
    ole_frame.getSubstitutePictureFormat().getPicture().setImage(ole_image)
    ole_frame.setObjectIcon(False)

    presentation.save("embeddedOLE-newImage.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

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

Новое изображение OLE‑объекта

FAQ

Почему появляется сообщение «EMBEDDED OLE OBJECT»?

Сообщение указывает, что OLE‑объект был изменён и его изображение‑превью необходимо обновить. Такое поведение преднамеренно.

Как обновить превью в PowerPoint?

Дважды щёлкните сообщение или выберите Object > Edit, чтобы открыть встроенный OLE‑объект. Щёлкните по OLE‑объекту для обновления превью, затем сохраните презентацию.

Можно ли заменить сообщение без открытия презентации в PowerPoint?

Да. Вы можете назначить предпочитаемое изображение‑превью OLE‑объекту, как показано в примере кода выше.