Oleオブジェクトの操作

OLEは"オブジェクトのリンクと埋め込み"を表します。 これは、ユーザーがサードパーティのアプリケーションによって作成または編集された「オブジェクト」を含むドキュメントを操作できるテクノロジです。 つまり、OLEを使用すると、アプリケーションはこれらの"オブジェクト"を別のアプリケーションにエクスポートして編集し、追加のコンテンツと一緒にイン

この記事では、OLEオブジェクトを挿入し、そのプロパティをドキュメントに設定する方法について説明します。

Oleオブジェクトを挿入

OLEオブジェクトが必要な場合は、InsertOleObjectメソッドを呼び出し、他のパラメータで明示的にProgIdを渡します。

次のコード例は、OLEオブジェクトをドキュメントに挿入する方法を示しています:

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

OLEオブジェクトを挿入するときにファイル名と拡張子を設定する

OLEパッケージは、OLEハンドラが不明な場合に埋め込まれたオブジェクトを格納するためのレガシーで"文書化されていない"方法です。

Windows 3.1、95、98などの初期のWindowsバージョンには、任意のタイプのデータをドキュメントに埋め込むために使用できるPackager.exeアプリケーションがありました。 このアプリケーションはWindowsから除外されましたが、Microsoft Wordや他のアプリケーションはOLEハンドラーがないか不明な場合でもデータを埋め込むために使用します。 OlePackageクラスを使用すると、ユーザーはOLE Packageプロパティにアクセスできます。

次のコード例は、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");
}

OLEオブジェクトの生データへのアクセスを取得する

ユーザーはOleFormatクラスのさまざまなプロパティとメソッドを使用してOLEオブジェクトデータにアクセスできます。 たとえば、OLEオブジェクトの生データ、またはリンクされたOLEオブジェクトのソースファイルのパスと名前を取得することができます。

次のコード例は、GetRawDataメソッドを使用してOLEオブジェクトの生データを取得する方法を示しています:

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

OLEオブジェクトをアイコンとして挿入する

OLEオブジェクトは画像として文書に挿入することもできます。

次のコード例は、OLEオブジェクトをアイコンとして挿入する方法を示しています。 この目的のために、DocumentBuilderクラスは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");

次のコード例は、埋め込みOLEオブジェクトをストリームからドキュメントにアイコンとして挿入する方法を示しています:

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

挿入オンラインビデオ

オンラインビデオは、*“Insert” > “Online Video”*タブからWord文書に挿入できます。 InsertOnlineVideoメソッドを呼び出すことで、現在の場所にあるドキュメントにオンラインビデオを挿入できます:

DocumentBuilderクラスには、このメソッドの4つのオーバーロードが導入されています。 最初のものは最も人気のあるビデオリソースで動作し、ビデオのURLをパラメータとして取ります。 例えば、最初の過負荷は、オンラインビデオの簡単な挿入をサポートしています YouTubeVimeo リソース。

次のコード例は、Vimeoのオンラインビデオをドキュメントに挿入する方法を示しています:

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

2番目のオーバーロードは、他のすべてのビデオリソースで動作し、埋め込みHTMLコードをパラメータとして受け取ります。 ビデオを埋め込むためのHTMLコードはプロバイダーによって異なる場合がありますので、詳細については各プロバイダーにお問い合わせください。

次のコード例は、このような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");