Travailler avec des objets OLE et des vidéos en ligne

OLE (Object Linking and Embedding) est une technologie grâce à laquelle les utilisateurs peuvent travailler avec des documents contenant des “objets” créés ou modifiés par des applications tierces. Autrement dit, OLE permet à une application d’édition d’exporter ces “objets” vers une autre application d’édition, puis de les importer avec du contenu supplémentaire.

Dans cet article, nous parlerons de l’insertion d’un objet OLE et de la définition de ses propriétés, ainsi que de l’insertion d’une vidéo en ligne dans un document.

Insérer un objet OLE

Si vous voulez un objet OLE, appelez la méthode insert_ole_object et transmettez-lui explicitement le ProgId avec d’autres paramètres.

L’exemple de code suivant montre comment insérer un objet OLE dans un document:

Définir le nom et l’extension du fichier lors de l’insertion d’un objet OLE

Le package OLE est un moyen ancien et “non documenté” de stocker des objets incorporés si un gestionnaire OLE est inconnu.

Les premières versions de Windows telles que Windows 3.1, 95 et 98 disposaient d’une application Packager.exe qui pouvait être utilisée pour intégrer tout type de données dans le document. Cette application est désormais exclue de Windows, mais Microsoft Word et d’autres applications l’utilisent toujours pour intégrer des données si le gestionnaire OLE est manquant ou inconnu. La classe OlePackage permet aux utilisateurs d’accéder aux propriétés du package OLE.

L’exemple de code suivant montre comment définir le nom de fichier, l’extension et le nom d’affichage du package OLE:

Accédez aux données brutes des objets OLE

Les utilisateurs peuvent accéder aux données des objets OLE à l’aide de diverses propriétés et méthodes de la classe OleFormat. Par exemple, il est possible d’obtenir les données brutes de l’objet OLE ou le chemin et le nom d’un fichier source pour l’objet OLE lié.

L’exemple de code suivant montre comment obtenir des données brutes d’objet OLE à l’aide de la méthode get_raw_data:

Insérer un objet OLE en tant qu’icône

Les objets OLE peuvent également être insérés dans des documents sous forme d’images.

L’exemple de code suivant montre comment insérer un objet OLE en tant qu’icône. A cet effet, la classe DocumentBuilder expose la méthode insert_ole_object_as_icon:

L’exemple de code suivant montre comment insérer un objet OLE incorporé sous forme d’icône à partir d’un flux dans le document:

Insérer une vidéo en ligne

La vidéo en ligne peut être insérée dans un document Word à partir de l’onglet “Insérer” > “Vidéo en ligne”. Vous pouvez insérer une vidéo en ligne dans un document à l’emplacement actuel en appelant la méthode insert_online_video.

La classe DocumentBuilder introduit quatre surcharges de cette méthode. Le premier fonctionne avec les ressources vidéo les plus populaires et prend le URL de la vidéo comme paramètre. Par exemple, la première surcharge prend en charge l’insertion simple de vidéos en ligne à partir de ressources Youtube et Viméo.

L’exemple de code suivant montre comment insérer une vidéo en ligne à partir de Vimeo dans un document:

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")

La deuxième surcharge fonctionne avec toutes les autres ressources vidéo et prend le code HTML intégré comme paramètre. Le code HTML permettant d’intégrer une vidéo peut varier selon le fournisseur, contactez donc le fournisseur concerné pour plus de détails.

L’exemple de code suivant montre comment insérer une vidéo en ligne dans un document à l’aide d’un tel code 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")