Trabajar con objetos OLE y vídeo en línea

OLE (Object Linking and Embedding) es una tecnología mediante la cual los usuarios pueden trabajar con documentos que contienen “objetos” creados o editados por aplicaciones de terceros. Es decir, OLE permite que una aplicación de edición exporte estos “objetos” a otra aplicación de edición y luego los importe con contenido adicional.

En este artículo, hablaremos sobre cómo insertar un objeto OLE y configurar sus propiedades, así como cómo insertar un video en línea en un documento.

Insertar objeto OLE

Si desea un objeto OLE, llame al método InsertOleObject y pásele el ProgId explícitamente con otros parámetros.

El siguiente ejemplo de código muestra cómo insertar un objeto OLE en un documento:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertOleObject("http://www.aspose.com", "htmlfile", true, true, null);
dataDir = dataDir + "DocumentBuilderInsertOleObject_out.doc";
doc.Save(dataDir);

Establecer el nombre y la extensión del archivo al insertar un objeto OLE

El paquete OLE es una forma heredada e “indocumentada” de almacenar objetos incrustados si se desconoce un controlador OLE.

Las primeras versiones de Windows, como Windows 3.1, 95 y 98, tenían una aplicación Packager.exe que podía usarse para incrustar cualquier tipo de datos en el documento. Esta aplicación ahora está excluida de Windows, pero Microsoft Word y otras aplicaciones aún la usan para incrustar datos si falta el controlador OLE o se desconoce. La clase OlePackage permite a los usuarios acceder a las propiedades del paquete OLE.

El siguiente ejemplo de código muestra cómo configurar el nombre del archivo, la extensión y el nombre para mostrar del paquete OLE:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
byte[] bs = File.ReadAllBytes(dataDir + @"input.zip");
using (Stream stream = new MemoryStream(bs))
{
Shape shape = builder.InsertOleObject(stream, "Package", true, null);
OlePackage olePackage = shape.OleFormat.OlePackage;
olePackage.FileName = "filename.zip";
olePackage.DisplayName = "displayname.zip";
dataDir = dataDir + "DocumentBuilderInsertOleObjectOlePackage_out.doc";
doc.Save(dataDir);
}

Obtenga acceso a datos sin procesar de objetos OLE

Los usuarios pueden acceder a datos de objetos OLE utilizando varias propiedades y métodos de la clase OleFormat. Por ejemplo, es posible obtener los datos sin procesar del objeto OLE o la ruta y el nombre de un archivo fuente para el objeto OLE vinculado.

El siguiente ejemplo de código muestra cómo obtener datos sin procesar de objetos OLE utilizando el método GetRawData:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Load document with OLE object.
Document doc = new Document(dataDir + "DocumentBuilderInsertTextInputFormField_out.doc");
Shape oleShape = (Shape)doc.GetChild(NodeType.Shape, 0, true);
byte[] oleRawData = oleShape.OleFormat.GetRawData();

Insertar objeto OLE como icono

Los objetos OLE también se pueden insertar en documentos como imágenes.

El siguiente ejemplo de código muestra cómo insertar un objeto OLE como un icono. Para ello, la clase DocumentBuilder expone el método InsertOleObjectAsIcon:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertOleObjectAsIcon(dataDir + "embedded.xlsx", false, dataDir + "icon.ico", "My embedded file");
doc.Save(dataDir + "EmbeddeWithIcon_out.docx");
Console.WriteLine("The document has been saved with OLE Object as an Icon.");

El siguiente ejemplo de código muestra cómo insertar un objeto OLE incrustado como un icono de una secuencia en el documento:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertOleObjectAsIcon(dataDir + "embedded.xlsx", false, dataDir + "icon.ico", "My embedded file");
using (MemoryStream stream = new MemoryStream(File.ReadAllBytes(dataDir + "embedded.xlsx")))
builder.InsertOleObjectAsIcon(stream, "Package", dataDir + "icon.ico", "My embedded file");
doc.Save(dataDir + "EmbeddeWithIconUsingStream_out.docx");
Console.WriteLine("The document has been saved with OLE Object as an Icon.");

Insertar vídeo en línea

El video en línea se puede insertar en un documento de Word desde la pestaña “Insertar” > “Video en línea”. Puede insertar un video en línea en un documento en la ubicación actual llamando al método InsertOnlineVideo.

La clase DocumentBuilder introduce cuatro sobrecargas de este método. El primero trabaja con los recursos de vídeo más populares y toma como parámetro el URL del vídeo. Por ejemplo, la primera sobrecarga admite la inserción simple de vídeos en línea desde recursos YouTube y Vimeo.

El siguiente ejemplo de código muestra cómo insertar un vídeo en línea desde Vimeo en un documento:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
//The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithOnlineVideo();
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Pass direct url from youtu.be.
string url = "https://youtu.be/t_1LYZ102RA";
double width = 360;
double height = 270;
Shape shape = builder.InsertOnlineVideo(url, width, height);
dataDir = dataDir + "Insert.OnlineVideo_out_.docx";
doc.Save(dataDir);

La segunda sobrecarga funciona con todos los demás recursos de vídeo y toma el código HTML incrustado como parámetro. El código HTML para insertar un vídeo puede variar según el proveedor, así que comuníquese con el proveedor respectivo para obtener más detalles.

El siguiente ejemplo de código muestra cómo insertar un vídeo en línea en un documento utilizando dicho código HTML:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
//The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithOnlineVideo();
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Shape width/height.
double width = 360;
double height = 270;
// Poster frame image.
byte[] imageBytes = File.ReadAllBytes("TestImage.jpg");
// Visible url
string vimeoVideoUrl = @"https://vimeo.com/52477838";
// Embed Html code.
string vimeoEmbedCode = "";
builder.InsertOnlineVideo(vimeoVideoUrl, vimeoEmbedCode, imageBytes, width, height);
dataDir = dataDir + "Insert.OnlineVideo_out_.docx";
doc.Save(dataDir);