Lavorare con oggetti OLE e video online

OLE (Object Linking and Embedding) è una tecnologia mediante la quale gli utenti possono lavorare con documenti contenenti “oggetti” creati o modificati da applicazioni di terze parti. Cioè, OLE consente a un’applicazione di modifica di esportare questi “oggetti” in un’altra applicazione di modifica e quindi di importarli con contenuto aggiuntivo.

In questo articolo parleremo dell’inserimento di un oggetto OLE e dell’impostazione delle sue proprietà, nonché dell’inserimento di un video online in un documento.

Inserisci oggetto OLE

Se desideri un oggetto OLE, chiama il metodo insert_ole_object e passagli esplicitamente il ProgId con altri parametri.

L’esempio di codice seguente mostra come inserire un oggetto OLE in un documento:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_ole_object("http://www.aspose.com", "htmlfile", True, True, None)
doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_ole_object.docx")

Imposta il nome e l’estensione del file durante l’inserimento dell’oggetto OLE

Il pacchetto OLE è un modo legacy e “non documentato” per archiviare oggetti incorporati se un gestore OLE è sconosciuto.

Le prime versioni di Windows come Windows 3.1, 95 e 98 avevano un’applicazione Packager.exe che poteva essere utilizzata per incorporare qualsiasi tipo di dati nel documento. Questa applicazione è ora esclusa da Windows, ma Microsoft Word e altre applicazioni la utilizzano ancora per incorporare dati se il gestore OLE manca o è sconosciuto. La classe OlePackage consente agli utenti di accedere alle proprietà del pacchetto OLE.

Nell’esempio di codice seguente viene illustrato come impostare il nome file, l’estensione e il nome visualizzato per il pacchetto OLE:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
stream = io.FileIO(docs_base.my_dir + "Zip file.zip")
shape = builder.insert_ole_object(stream, "Package", True, None)
olePackage = shape.ole_format.ole_package
olePackage.file_name = "filename.zip"
olePackage.display_name = "displayname.zip"
doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_ole_object_with_ole_package.docx")
stream.close()

Ottieni l’accesso ai dati grezzi dell’oggetto OLE

Gli utenti possono accedere ai dati degli oggetti OLE utilizzando varie proprietà e metodi della classe OleFormat. Ad esempio, è possibile ottenere i dati grezzi dell’oggetto OLE o il percorso e il nome di un file sorgente per l’oggetto OLE collegato.

L’esempio di codice seguente mostra come ottenere i dati grezzi dell’oggetto OLE utilizzando il metodo get_raw_data:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
oleShape = doc.get_child(aw.NodeType.SHAPE, 0, True).as_shape()
oleRawData = oleShape.ole_format.get_raw_data()

Inserisci oggetto OLE come icona

Gli oggetti OLE possono anche essere inseriti nei documenti come immagini.

Nell’esempio di codice seguente viene illustrato come inserire oggetto OLE come icona. A questo scopo la classe DocumentBuilder espone il metodo insert_ole_object_as_icon:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_ole_object_as_icon(docs_base.my_dir + "Presentation.pptx", False, docs_base.images_dir + "Logo icon.ico", "My embedded file")
doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_ole_object_as_icon.docx")

L’esempio di codice seguente mostra come inserire un oggetto OLE incorporato come icona da un flusso nel documento:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
stream = io.FileIO(docs_base.my_dir + "Presentation.pptx")
builder.insert_ole_object_as_icon(stream, "Package", docs_base.images_dir + "Logo icon.ico", "My embedded file")
doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_ole_object_as_icon_using_stream.docx")

Inserisci video in linea

Il video online può essere inserito nel documento Word dalla scheda “Inserisci” > “Video online”. Puoi inserire un video online in un documento nella posizione corrente chiamando il metodo insert_online_video.

La classe DocumentBuilder introduce quattro sovraccarichi di questo metodo. Il primo funziona con le risorse video più popolari e prende come parametro il URL del video. Ad esempio, il primo sovraccarico supporta il semplice inserimento di video online da risorse Youtube e Vimeo.

Il seguente esempio di codice mostra come inserire un video online da Vimeo in un documento:

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

Il secondo sovraccarico funziona con tutte le altre risorse video e accetta il codice HTML incorporato come parametro. Il codice HTML per incorporare un video può variare a seconda del fornitore, quindi contatta il rispettivo fornitore per i dettagli.

Il seguente esempio di codice mostra come inserire un video online in un documento utilizzando tale codice 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")