OLE Nesnelerle Çalışma

OLE (Nesne Bağlama ve Gömme), kullanıcıların üçüncü taraf uygulamalar tarafından oluşturulan veya düzenlenen “nesneler” içeren belgelerle çalışabilecekleri bir teknolojidir. Diğer bir deyişle, OLE bir düzenleme uygulamasının bu “nesneleri” başka bir düzenleme uygulamasına dışa aktarmasına ve ardından bunları ek içerikle içe aktarmasına izin verir.

Bu makalede, bir OLE nesnesi ekleme ve özelliklerini bir belgeye ayarlama hakkında konuşacağız.

OLE Nesnesi ekle

OLE Nesnesini istiyorsanız, InsertOleObject yöntemini çağırın ve ProgId yöntemini diğer parametrelerle açıkça iletin.

Aşağıdaki kod örneği, bir belgeye OLE Nesnesinin nasıl ekleneceğini gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->InsertOleObject(u"http://www.aspose.com", u"htmlfile", true, true, nullptr);
doc->Save(ArtifactsDir + u"WorkingWithOleObjectsAndActiveX.InsertOleObject.docx");

OLE Nesnesi Eklerken Dosya Adını ve Uzantısını Ayarlayın

OLE paket, bir OLE işleyicisi bilinmiyorsa, gömülü nesneleri depolamanın eski ve “belgelenmemiş” bir yoludur.

Windows 3.1, 95 ve 98 gibi ilk Windows sürümlerinde bir Paketleyici vardı.belgeye herhangi bir veri türünü gömmek için kullanılabilecek exe uygulaması. Bu uygulama artık Windows dışında tutuluyor, ancak Microsoft Word ve diğer uygulamalar, OLE işleyicisi eksik veya bilinmiyorsa verileri gömmek için kullanmaya devam ediyor. OlePackage sınıfı, kullanıcıların OLE Paket özelliklerine erişmesine izin verir.

Aşağıdaki kod örneği, OLE Paketi için dosya adı, uzantı ve görünen adın nasıl ayarlanacağını gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
ArrayPtr<uint8_t> bs = System::IO::File::ReadAllBytes(MyDir + u"Zip file.zip");
{
SharedPtr<System::IO::Stream> stream = MakeObject<System::IO::MemoryStream>(bs);
SharedPtr<Shape> shape = builder->InsertOleObject(stream, u"Package", true, nullptr);
SharedPtr<OlePackage> olePackage = shape->get_OleFormat()->get_OlePackage();
olePackage->set_FileName(u"filename.zip");
olePackage->set_DisplayName(u"displayname.zip");
doc->Save(ArtifactsDir + u"WorkingWithOleObjectsAndActiveX.InsertOleObjectWithOlePackage.docx");
}

OLE Nesne Ham Verilerine Erişin

Kullanıcılar OleFormat sınıfının çeşitli özelliklerini ve yöntemlerini kullanarak OLE nesne verilerine erişebilir. Örneğin, OLE nesnesinin ham verilerini veya bağlantılı OLE nesnesinin bir kaynak dosyasının yolunu ve adını almak mümkündür.

Aşağıdaki kod örneği, GetRawData yöntemini kullanarak OLE Nesne ham verilerinin nasıl alınacağını gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto oleShape = System::DynamicCast<Shape>(doc->GetChild(NodeType::Shape, 0, true));
ArrayPtr<uint8_t> oleRawData = oleShape->get_OleFormat()->GetRawData();

Ole Nesnesini Simge Olarak Ekleme

OLE nesneler belgelere resim olarak da eklenebilir.

Aşağıdaki kod örneği, OLE Nesnesinin simge olarak nasıl ekleneceğini gösterir. Bu amaçla, DocumentBuilder sınıfı InsertOleObjectAsIcon yöntemini gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->InsertOleObjectAsIcon(MyDir + u"Presentation.pptx", false, ImagesDir + u"Logo icon.ico", u"My embedded file");
doc->Save(ArtifactsDir + u"WorkingWithOleObjectsAndActiveX.InsertOleObjectAsIcon.docx");

Aşağıdaki kod örneği, katıştırılmış bir OLE nesnesinin bir akıştan belgeye simge olarak nasıl ekleneceğini gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
{
auto stream = MakeObject<System::IO::MemoryStream>(System::IO::File::ReadAllBytes(MyDir + u"Presentation.pptx"));
builder->InsertOleObjectAsIcon(stream, u"Package", ImagesDir + u"Logo icon.ico", u"My embedded file");
}
doc->Save(ArtifactsDir + u"WorkingWithOleObjectsAndActiveX.InsertOleObjectAsIconUsingStream.docx");

Çevrimiçi Video Ekle

Çevrimiçi video, “Insert” > “Online Video” sekmesinden Word belgesine eklenebilir. InsertOnlineVideo yöntemini çağırarak geçerli konumdaki bir belgeye çevrimiçi bir video ekleyebilirsiniz.

DocumentBuilder sınıfı, bu yöntemin dört aşırı yüklenmesini sağlar. İlki en popüler video kaynaklarıyla çalışır ve videonun URL değerini parametre olarak alır. Örneğin, ilk aşırı yük, çevrimiçi videoların basit bir şekilde eklenmesini destekler YouTube ve Vimeo’nun kaynaklar.

Aşağıdaki kod örneği, çevrimiçi bir videonun Vimeo öğesinden bir belgeye nasıl ekleneceğini gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->InsertOnlineVideo(u"https://youtu.be/t_1LYZ102RA", 360, 270);
// We can watch the video from Microsoft Word by clicking on the shape.
doc->Save(ArtifactsDir + u"DocumentBuilder.InsertVideoWithUrl.docx");

İkinci aşırı yük, diğer tüm video kaynaklarıyla çalışır ve gömülü HTML kodunu parametre olarak alır. Bir videoyu yerleştirmek için HTML kodu sağlayıcıya bağlı olarak değişebilir, bu nedenle ayrıntılar için ilgili sağlayıcıyla iletişime geçin.

Aşağıdaki kod örneği, bu HTML kodunu kullanarak bir belgeye çevrimiçi bir videonun nasıl ekleneceğini gösterir:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
String videoUrl = u"https://vimeo.com/52477838";
String videoEmbedCode = String(u"<iframe src=\"https://player.vimeo.com/video/52477838\" width=\"640\" height=\"360\" frameborder=\"0\" ") +
u"title=\"Aspose\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>";
ArrayPtr<uint8_t> thumbnailImageBytes = System::IO::File::ReadAllBytes(ImageDir + u"Logo.jpg");
{
auto stream = MakeObject<System::IO::MemoryStream>(thumbnailImageBytes);
{
SharedPtr<System::Drawing::Image> image = System::Drawing::Image::FromStream(stream);
// 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->get_Width(), image->get_Height());
}
}
doc->Save(ArtifactsDir + u"DocumentBuilder.InsertOnlineVideoCustomThumbnail.docx");