Praca z obiektami OLE i wideo online

OLE (Object Linking and Embedding) 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 pozwala aplikacji edycyjnej wyeksportować te “obiekty” do innej aplikacji edycyjnej, a następnie zaimportować je z dodatkową zawartością.

W tym artykule omówimy wstawianie obiektu OLE i ustawianie jego właściwości, a także wstawianie wideo online do dokumentu.

Wstaw obiekt OLE

Jeśli chcesz obiekt OLE, wywołaj metodę InsertOleObject i przekaż jawnie ProgId 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-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertOleObject("http://www.aspose.com", "htmlfile", true, true, null);
dataDir = dataDir + "DocumentBuilderInsertOleObject_out.doc";
doc.Save(dataDir);

Ustaw nazwę pliku i rozszerzenie podczas wstawiania obiektu OLE

Pakiet OLE to starsza i “nieudokumentowana” metoda przechowywania osadzonych obiektów, jeśli procedura obsługi OLE jest nieznana.

Wczesne wersje Windows, takie jak Windows 3.1, 95 i 98, zawierały aplikację Packager.exe, której można było używać do osadzania 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 modułu obsługi OLE lub jest on nieznany. Klasa OlePackage umożliwia użytkownikom dostęp do właściwości pakietu OLE.

Poniższy przykład kodu pokazuje, jak ustawić nazwę pliku, rozszerzenie i nazwę wyświetlaną dla pakietu OLE:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
byte[] bs = File.ReadAllBytes(dataDir + @"input.zip");
using (Stream stream = new MemoryStream(bs))
{
Shape shape = builder.InsertOleObject(stream, "Package", true, null);
OlePackage olePackage = shape.OleFormat.OlePackage;
olePackage.FileName = "filename.zip";
olePackage.DisplayName = "displayname.zip";
dataDir = dataDir + "DocumentBuilderInsertOleObjectOlePackage_out.doc";
doc.Save(dataDir);
}

Uzyskaj dostęp do nieprzetworzonych danych obiektu OLE

Użytkownicy mogą uzyskać dostęp do danych obiektowych OLE za pomocą różnych właściwości i metod klasy OleFormat. Na przykład możliwe jest uzyskanie nieprzetworzonych danych obiektu OLE lub ścieżki i nazwy pliku źródłowego połączonego obiektu OLE.

Poniższy przykład kodu pokazuje, jak uzyskać surowe 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-.NET
// Load document with OLE object.
Document doc = new Document(dataDir + "DocumentBuilderInsertTextInputFormField_out.doc");
Shape oleShape = (Shape)doc.GetChild(NodeType.Shape, 0, true);
byte[] oleRawData = oleShape.OleFormat.GetRawData();

Wstaw obiekt OLE jako ikonę

Obiekty OLE 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 udostępnia metodę InsertOleObjectAsIcon:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertOleObjectAsIcon(dataDir + "embedded.xlsx", false, dataDir + "icon.ico", "My embedded file");
doc.Save(dataDir + "EmbeddeWithIcon_out.docx");
Console.WriteLine("The document has been saved with OLE Object as an Icon.");

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-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertOleObjectAsIcon(dataDir + "embedded.xlsx", false, dataDir + "icon.ico", "My embedded file");
using (MemoryStream stream = new MemoryStream(File.ReadAllBytes(dataDir + "embedded.xlsx")))
builder.InsertOleObjectAsIcon(stream, "Package", dataDir + "icon.ico", "My embedded file");
doc.Save(dataDir + "EmbeddeWithIconUsingStream_out.docx");
Console.WriteLine("The document has been saved with OLE Object as an Icon.");

Wstaw wideo online

Wideo online można wstawić do dokumentu programu Word za pomocą karty * “Wstaw” > “Wideo online”*. 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 współpracuje z najpopularniejszymi zasobami wideo i jako parametr przyjmuje URL wideo. Na przykład pierwsze przeciążenie obsługuje proste wstawianie filmów online z zasobów Youtube i Vimeo.

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-.NET
//The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithOnlineVideo();
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Pass direct url from youtu.be.
string url = "https://youtu.be/t_1LYZ102RA";
double width = 360;
double height = 270;
Shape shape = builder.InsertOnlineVideo(url, width, height);
dataDir = dataDir + "Insert.OnlineVideo_out_.docx";
doc.Save(dataDir);

Drugie przeciążenie działa ze wszystkimi innymi zasobami wideo i jako parametr przyjmuje osadzony kod HTML. Kod HTML umożliwiający osadzanie filmu wideo może się różnić w zależności od dostawcy, dlatego w celu uzyskania szczegółowych informacji należy skontaktować się z odpowiednim dostawcą.

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-.NET
//The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithOnlineVideo();
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Shape width/height.
double width = 360;
double height = 270;
// Poster frame image.
byte[] imageBytes = File.ReadAllBytes("TestImage.jpg");
// Visible url
string vimeoVideoUrl = @"https://vimeo.com/52477838";
// Embed Html code.
string vimeoEmbedCode = "";
builder.InsertOnlineVideo(vimeoVideoUrl, vimeoEmbedCode, imageBytes, width, height);
dataDir = dataDir + "Insert.OnlineVideo_out_.docx";
doc.Save(dataDir);