Trabajar con Ole Objetos
OLE significa “Vinculación e incrustación de objetos”. Esta es la 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 exporte estos “objetos” a otra aplicación para editarlos y luego importarlos nuevamente con algún contenido adicional.
En este artículo, hablaremos sobre cómo insertar un objeto OLE y establecer sus propiedades en un documento.
Insertar Ole Objeto
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-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.insertOleObject("http://www.aspose.com", "htmlfile", true, true, null); | |
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObject.docx"); |
Establezca el Nombre y la Extensión del Archivo al Insertar el 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 OLE Package.
El siguiente ejemplo de código muestra cómo establecer el nombre de archivo, la extensión y el nombre para mostrar de OLE Package:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
byte[] bs = FileUtils.readFileToByteArray(new File(getMyDir() + "Zip file.zip")); | |
try (ByteArrayInputStream stream = new ByteArrayInputStream(bs)) | |
{ | |
Shape shape = builder.insertOleObject(stream, "Package", true, null); | |
OlePackage olePackage = shape.getOleFormat().getOlePackage(); | |
olePackage.setFileName("filename.zip"); | |
olePackage.setDisplayName("displayname.zip"); | |
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObjectWithOlePackage.docx"); | |
} |
Obtenga Acceso a los Datos sin Procesar del Objeto OLE
Los usuarios pueden acceder a los datos del objeto 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 de origen para el objeto OLE vinculado.
El siguiente ejemplo de código muestra cómo obtener datos sin procesar del objeto OLE utilizando el método GetRawData:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Shape oleShape = (Shape) doc.getChild(NodeType.SHAPE, 0, true); | |
byte[] oleRawData = oleShape.getOleFormat().getRawData(); |
Insertar objeto OLE como icono
OLE los objetos también se pueden insertar en documentos como imágenes.
El siguiente ejemplo de código muestra cómo insertar el objeto OLE como icono. Para este propósito, 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-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.insertOleObjectAsIcon(getMyDir() + "Presentation.pptx", false, getImagesDir() + "Logo icon.ico", | |
"My embedded file"); | |
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObjectAsIcon.docx"); |
El siguiente ejemplo de código muestra cómo insertar un objeto OLE incrustado como icono desde una secuencia en el documento:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
try(ByteArrayInputStream stream = new ByteArrayInputStream(FileUtils.readFileToByteArray(new File(getMyDir() + "Presentation.pptx")))) | |
{ | |
builder.insertOleObjectAsIcon(stream, "Package", getImagesDir() + "Logo icon.ico", "My embedded file"); | |
} | |
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObjectAsIconUsingStream.docx"); |
Insertar Video en Línea
El video en línea se puede insertar en un documento de Word desde la pestaña “Insert” > “Online Video”. 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 funciona con los recursos de video más populares y toma el URL
del video como parámetro. Por ejemplo, la primera sobrecarga admite la inserción simple de videos en línea desde YouTube y Vimeo recursos.
El siguiente ejemplo de código muestra cómo insertar un video en línea de Vimeo en un documento:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.insertOnlineVideo("https://youtu.be/t_1LYZ102RA", 360.0, 270.0); | |
// We can watch the video from Microsoft Word by clicking on the shape. | |
doc.save(getArtifactsDir() + "DocumentBuilder.InsertVideoWithUrl.docx"); |
La segunda sobrecarga funciona con todos los demás recursos de video y toma el código HTML incrustado como parámetro. El código HTML para incrustar un video 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 video en línea en un documento usando dicho código HTML:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
String videoUrl = "https://vimeo.com/52477838"; | |
String videoEmbedCode = "<iframe src=\"https://player.vimeo.com/video/52477838\" width=\"640\" height=\"360\" frameborder=\"0\" " + | |
"title=\"Aspose\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"; | |
byte[] thumbnailImageBytes = IOUtils.toByteArray(getAsposelogoUri().toURL().openStream()); | |
BufferedImage image = ImageIO.read(new ByteArrayInputStream(thumbnailImageBytes)); | |
// Below are two ways of creating a shape with a custom thumbnail, which links to an online video | |
// that will play when we click on the shape in Microsoft Word. | |
// 1 - Insert an inline shape at the builder's node insertion cursor: | |
builder.insertOnlineVideo(videoUrl, videoEmbedCode, thumbnailImageBytes, image.getWidth(), image.getHeight()); | |
doc.save(getArtifactsDir() + "DocumentBuilder.InsertOnlineVideoCustomThumbnail.docx"); |