کار با اشیاء OLE و ویدیوی آنلاین

OLE (Object Linking and Embedding) فناوری است که توسط آن کاربران می توانند با اسنادی که حاوی “اشیاء” ایجاد یا ویرایش شده توسط برنامه های شخص ثالث هستند کار کنند. یعنی OLE به یک برنامه ویرایش اجازه می دهد تا این “اشیاء” را به برنامه ویرایش دیگری صادر کند و سپس آنها را با محتوای اضافی وارد کند.

در این مقاله در مورد درج یک شی OLE و تنظیم خصوصیات آن و همچنین درج یک ویدیوی آنلاین در یک سند صحبت خواهیم کرد.

درج OLE Object

اگر OLE Object را می‌خواهید، متد InsertOleObject را فراخوانی کنید و آن را با پارامترهای دیگر به وضوح ProgId ارسال کنید.

مثال کد زیر نحوه درج OLE Object را در یک سند نشان می دهد:

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

هنگام قرار دادن شی OLE، نام و پسوند فایل را تنظیم کنید

بسته OLE یک روش قدیمی و “غیر مستند” برای ذخیره اشیاء تعبیه شده در صورت ناشناخته بودن یک کنترل کننده OLE است.

نسخه های اولیه Windows مانند Windows 3.1، 95 و 98 دارای یک برنامه Packager.exe بودند که می توانست برای جاسازی هر نوع داده در سند استفاده شود. این برنامه اکنون از Windows مستثنی شده است، اما Microsoft Word و سایر برنامه‌ها همچنان از آن برای جاسازی داده‌ها استفاده می‌کنند، اگر کنترل‌کننده OLE وجود نداشته باشد یا ناشناخته باشد. کلاس OlePackage به کاربران امکان دسترسی به ویژگی های بسته OLE را می دهد.

مثال کد زیر نحوه تنظیم نام فایل، پسوند و نام نمایشی بسته 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);
}

به داده های خام OLE Object دسترسی پیدا کنید

کاربران می توانند با استفاده از ویژگی ها و روش های مختلف کلاس OleFormat به داده های شی OLE دسترسی داشته باشند. به عنوان مثال، دریافت داده های خام شی OLE یا مسیر و نام یک فایل منبع برای شی OLE پیوند شده امکان پذیر است.

مثال کد زیر نحوه دریافت داده خام OLE Object را با استفاده از روش 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();

شی OLE را به عنوان نماد درج کنید

اشیاء OLE همچنین می توانند به عنوان تصویر در اسناد وارد شوند.

مثال کد زیر نحوه درج OLE Object را به عنوان یک نماد نشان می دهد. برای این منظور، کلاس DocumentBuilder روش 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.");

مثال کد زیر نحوه درج یک شی 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);
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.");

درج ویدیوی آنلاین

ویدیوی آنلاین را می توان از برگه “Insert” > “Online Video” در سند Word درج کرد. با فراخوانی روش InsertOnlineVideo می‌توانید یک ویدیوی آنلاین را در مکان فعلی در سند وارد کنید.

کلاس DocumentBuilder چهار بار اضافه بار از این روش را معرفی می کند. اولین مورد با محبوب ترین منابع ویدیویی کار می کند و URL ویدیو را به عنوان پارامتر می گیرد. به عنوان مثال، بار اول از درج ساده ویدیوهای آنلاین از منابع یوتیوب و Vimeo پشتیبانی می کند.

مثال کد زیر نحوه درج یک ویدیوی آنلاین از Vimeo را در یک سند نشان می دهد:

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

اضافه بار دوم با سایر منابع ویدیویی کار می کند و کد HTML تعبیه شده را به عنوان پارامتر می گیرد. کد HTML برای جاسازی یک ویدیو ممکن است بسته به ارائه دهنده متفاوت باشد، بنابراین برای جزئیات بیشتر با ارائه دهنده مربوطه تماس بگیرید.

مثال کد زیر نشان می دهد که چگونه می توان یک ویدیوی آنلاین را با استفاده از چنین کدهای 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);