Práce s Ole objekty

OLE znamená “Object Linking and Embedding.” Jedná se o technologii, pomocí které mohou uživatelé pracovat s dokumenty obsahujícími “objekty” vytvořené nebo editované aplikacemi třetích stran. To znamená, že OLE umožňuje aplikaci exportovat tyto “objekty” do jiné aplikace pro editaci, a pak je importovat zpět s nějakým dalším obsahem.

V tomto článku budeme hovořit o vložení OLE objektu a nastavení jeho vlastností do dokumentu.

Vložit Ole objekt

Pokud chcete OLE Object, volejte InsertOleObject způsob a předat ProgId explicitně s jinými parametry.

Následující příklad kódu ukazuje, jak vložit OLE Objekt do dokumentu:

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

Nastavit název souboru a příponu při vkládání OLE objektu

OLE balíček je odkaz a “nedokumentovaný” způsob uložení vložených objektů, pokud je OLE manipulátor neznámý.

Brzy Windows verze jako např. Windows 3.1, 95 a 98 měli Balič. exe aplikace, která by mohla být použita k vložení jakéhokoli typu dat do dokumentu. Tato žádost je nyní vyloučena Windows, ale Microsoft Word a další aplikace ji stále používají k vložení dat, pokud OLE manipulátor chybí nebo není znám. The OlePackage třída umožňuje uživatelům přístup k vlastnostem OLE balíčku.

Následující příklad kódu ukazuje, jak nastavit název souboru, příponu a název displeje pro 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");
}

Získejte přístup k Raw data objektu OLE

Uživatelé mohou přistupovat k OLE objektům pomocí různých vlastností a metod OleFormat třída. Například, je možné získat OLE objekt surových dat nebo cesta a název zdrojového souboru pro propojený OLE objekt.

Následující příklad kódu ukazuje, jak získat OLE Objekt surové údaje pomocí GetRawData metoda:

// 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();

Vložit OLE Objekt jako ikona

OLE objekty mohou být také vloženy do dokumentů jako obrázky.

Následující příklad kódu ukazuje, jak vložit OLE Object jako ikonu. Za tímto účelem DocumentBuilder třída odhaluje InsertOleObjectAsIcon metoda.

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

Následující příklad kódu ukazuje, jak vložit vložený OLE objekt jako ikonu z proudu do dokumentu:

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

Vložit online video

Online video lze vložit do dokumentu Word z záložky “Insert” > “Online Video”. Můžete vložit online video do dokumentu na aktuálním místě voláním InsertOnlineVideo metoda:

The DocumentBuilder třída zavádí čtyři přetížení této metody. První z nich pracuje s nejoblíbenější video zdroje a bere URL video jako parametr. Například první přetížení podporuje jednoduché vložení online videí z YouTube a Vimeo zdroje.

Následující příklad kódu ukazuje, jak vložit online video z Vimeo do dokumentu:

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

Druhé přetížení pracuje se všemi ostatními video zdroji a bere vložený HTML kód jako parametr. HTML kód pro vložení videa se může lišit v závislosti na poskytovateli, takže kontaktujte příslušného poskytovatele pro podrobnosti.

Následující příklad kódu ukazuje, jak vložit online video do dokumentu pomocí takového HTML kódu:

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