Praca z obiektami OLE
OLE (łączenie i osadzanie obiektów) to technologia, dzięki której użytkownicy mogą pracować z Dokumentami zawierającymi “obiekty” utworzone lub edytowane przez aplikacje innych firm. Oznacza to, że OLE umożliwia aplikacji do edycji eksportowanie tych “obiektów” do innej aplikacji do edycji, a następnie importowanie ich z dodatkową zawartością.
W tym artykule porozmawiamy o wstawieniu obiektu OLE i ustawieniu jego właściwości w dokumencie.
Insert OLE Object
Jeśli chcesz OLE Obiekt, wywołaj metodę InsertOleObject i przekaż ją ProgId jawnie z innymi parametrami.
Poniższy przykład kodu pokazuje, jak wstawić obiekt 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"); |
Ustaw nazwę pliku i rozszerzenie podczas wstawiania obiektu OLE
OLE Pakiet jest starszym i" nieudokumentowanym " sposobem przechowywania osadzonych obiektów, jeśli program obsługi OLE jest nieznany.
Wczesne wersje Windows, takie jak Windows 3.1, 95 i 98, miały aplikację Packager.exe, której można było użyć do osadzenia dowolnego typu danych w dokumencie. Ta aplikacja jest teraz wykluczona z Windows, ale Microsoft Word i inne aplikacje nadal używają jej do osadzania danych, jeśli brakuje programu obsługi OLE lub jest nieznany. Klasa OlePackage
umożliwia użytkownikom dostęp do właściwości OLE Package.
Poniższy przykład kodu pokazuje, jak ustawić nazwę pliku, rozszerzenie i nazwę wyświetlaną dla 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"); | |
} |
Uzyskaj dostęp do nieprzetworzonych danych obiektu OLE
Użytkownicy mogą uzyskać dostęp do danych obiektów OLE przy użyciu różnych właściwości i metod klasy OleFormat
. Na przykład możliwe jest uzyskanie surowych danych OLE
obiektu lub ścieżki i nazwy pliku źródłowego dla połączonego obiektu OLE.
Poniższy przykład kodu pokazuje, jak uzyskać nieprzetworzone dane obiektu OLE przy użyciu 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(); |
Wstaw obiekt Ole jako ikonę
OLE obiekty można również wstawiać do dokumentów jako obrazy.
Poniższy przykład kodu pokazuje, jak wstawić obiekt OLE jako ikonę. W tym celu klasa DocumentBuilder ujawnia metodę 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"); |
Poniższy przykład kodu pokazuje, jak wstawić osadzony obiekt OLE jako ikonę ze strumienia 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"); |
Wstaw Wideo Online
Wideo Online można wstawić do dokumentu Word z zakładki “Insert” > “Online Video”. Możesz wstawić wideo online do dokumentu w bieżącej lokalizacji, wywołując metodę InsertOnlineVideo.
Klasa DocumentBuilder wprowadza cztery przeciążenia tej metody. Pierwszy z nich działa z najpopularniejszymi zasobami wideo i przyjmuje URL
wideo jako parametr. Na przykład pierwsze przeciążenie obsługuje proste wstawianie filmów online z YouTube oraz Vimeo zasoby.
Poniższy przykład kodu pokazuje, jak wstawić wideo online 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"); |
Drugie przeciążenie działa ze wszystkimi innymi zasobami wideo i przyjmuje osadzony kod HTML jako parametr. Kod HTML do osadzania wideo może się różnić w zależności od dostawcy, więc skontaktuj się z odpowiednim dostawcą, aby uzyskać szczegółowe informacje.
Poniższy przykład kodu pokazuje, jak wstawić wideo online do dokumentu przy użyciu takiego kodu HTML:
//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"); |