Работа с объектами OLE и онлайн-видео

OLE (Связывание и встраивание объектов) - это технология, с помощью которой пользователи могут работать с документами, содержащими “объекты”, созданные или отредактированные сторонними приложениями. То есть OLE позволяет приложению редактирования экспортировать эти “объекты” в другое приложение редактирования, а затем импортировать их с дополнительным содержимым.

В этой статье мы поговорим о вставке объекта OLE и настройке его свойств, а также о вставке онлайн-видео в документ.

Вставить объект OLE

Если вам нужен объект OLE, вызовите метод insert_ole_object и передайте ему ProgId явно с другими параметрами.

В следующем примере кода показано, как вставить объект OLE в документ:

Задайте имя и расширение файла при вставке объекта OLE

OLE пакет - это устаревший и “недокументированный” способ хранения встроенных объектов, если обработчик OLE неизвестен.

В ранних версиях Windows, таких как Windows 3.1, 95 и 98, было приложение Packager.exe, которое можно было использовать для встраивания данных любого типа в документ. Это приложение теперь исключено из Windows, но Microsoft Word и другие приложения по-прежнему используют его для встраивания данных, если обработчик OLE отсутствует или неизвестен. Класс OlePackage позволяет пользователям получать доступ к свойствам OLE Package.

В следующем примере кода показано, как задать имя файла, расширение и отображаемое имя для OLE Package:

Получить доступ к необработанным данным объекта OLE

Пользователи могут обращаться к данным объекта OLE, используя различные свойства и методы класса OleFormat. Например, можно получить исходные данные объекта OLE или путь и имя исходного файла для связанного объекта OLE.

В следующем примере кода показано, как получить необработанные данные объекта OLE с помощью метода get_raw_data:

Вставить объект OLE в качестве значка

OLE объекты также могут быть вставлены в документы в виде изображений.

В следующем примере кода показано, как вставить объект OLE в качестве значка. Для этой цели класс DocumentBuilder предоставляет метод insert_ole_object_as_icon:

В следующем примере кода показано, как вставить внедренный объект OLE в качестве значка из потока в документ:

Вставить онлайн-видео

Онлайн-видео можно вставить в документ Word на вкладке “Insert” > “Online Video”. Вы можете вставить онлайн-видео в документ в текущем местоположении, вызвав метод insert_online_video.

Класс DocumentBuilder вводит четыре перегрузки этого метода. Первая перегрузка работает с наиболее популярными видеоресурсами и принимает URL видео в качестве параметра. Например, первая перегрузка поддерживает простую вставку онлайн-видео из YouTube и Вимео ресурсы.

В следующем примере кода показано, как вставить онлайн-видео из Vimeo в документ:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Pass direct url from youtu.be.
url = "https://www.youtube.com/watch?v=t_1LYZ102RA"

width = 360
height = 270

shape = builder.insert_online_video(url, width, height)

doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_online_video.docx")

Вторая перегрузка работает со всеми другими видеоресурсами и использует встроенный код HTML в качестве параметра. Код HTML для встраивания видео может отличаться в зависимости от поставщика, поэтому обратитесь к соответствующему поставщику за подробностями.

В следующем примере кода показано, как вставить онлайн-видео в документ, используя такой код HTML:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Shape width/height.
width = 360
height = 270

# Poster frame image.
f = open(docs_base.images_dir + "Logo.jpg", "rb")
imageBytes = f.read()
f.close()

# Visible url
vimeoVideoUrl = "https://vimeo.com/52477838"

# Embed Html code.
vimeoEmbedCode = ""

builder.insert_online_video(vimeoVideoUrl, vimeoEmbedCode, imageBytes, width, height)

doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_online_video_with_embed_html.docx")