Práce s objekty OLE
OLE (Object Linking and Embedding) je technologie, pomocí které mohou uživatelé pracovat s dokumenty obsahujícími “objekty” vytvořené nebo upravené aplikacemi třetích stran. To znamená, že OLE umožňuje editační aplikaci exportovat tyto “objekty” do jiné editační aplikace a poté je importovat s dalším obsahem.
V tomto článku budeme hovořit o vložení objektu OLE a nastavení jeho vlastností do dokumentu.
Vložit OLE Objekt
Pokud chcete OLE objekt, zavolejte metodu InsertOleObject a předejte ji ProgId explicitně s dalšími parametry.
Následující příklad kódu ukazuje, jak vložit objekt OLE do dokumentu:
//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"); |
Při vkládání OLE objektu Nastavte název souboru a příponu
OLE balíček je starší a" nezdokumentovaný " způsob ukládání vložených objektů, pokud není známa obslužná rutina OLE.
Rané verze Windows jako Windows 3.1, 95 a 98 měly aplikaci Packager.exe, kterou bylo možné použít k vložení jakéhokoli typu dat do dokumentu. Tato aplikace je nyní vyloučena z Windows, ale Microsoft Word a další aplikace ji stále používají k vložení dat, pokud psovod OLE chybí nebo není znám. Třída OlePackage
umožňuje uživatelům přístup k vlastnostem OLE Package.
Následující příklad kódu ukazuje, jak nastavit název souboru, příponu a zobrazovaný název pro OLE Package:
//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"); | |
} |
Získejte přístup k OLE surovým datům objektu
Uživatelé mohou přistupovat k objektovým datům OLE pomocí různých vlastností a metod třídy OleFormat
. Například je možné získat nezpracovaná data objektu OLE
nebo cestu a název zdrojového souboru pro propojený objekt OLE.
Následující příklad kódu ukazuje, jak získat nezpracovaná data objektu OLE pomocí metody GetRawData:
//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(); |
Vložit Ole objekt jako ikonu
OLE objekty lze také vkládat do dokumentů jako obrázky.
Následující příklad kódu ukazuje, jak vložit objekt OLE jako ikonu. Za tímto účelem třída DocumentBuilder vystavuje metodu InsertOleObjectAsIcon:
//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"); |
Následující příklad kódu ukazuje, jak vložit vložený objekt OLE jako ikonu ze streamu do dokumentu:
//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"); |
Vložit Online Video
Online video lze vložit do Word dokumentu z karty “Insert” > “Online Video”. Online video můžete vložit do dokumentu v aktuálním umístění voláním metody InsertOnlineVideo.
Třída DocumentBuilder zavádí čtyři přetížení této metody. První pracuje s nejoblíbenějšími video zdroji a jako parametr bere URL
videa. Například první přetížení podporuje jednoduché vkládání online videí z YouTube a Vimeo zdroj.
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-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"); |
Druhé přetížení pracuje se všemi ostatními video prostředky a jako parametr bere vložený kód HTML. Kód HTML pro vložení videa se může lišit v závislosti na poskytovateli, proto 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-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"); |