العمل مع Ole الكائنات

OLE تعني “ربط الكائن وتضمينه”. هذه هي التقنية التي يمكن للمستخدمين من خلالها العمل مع المستندات التي تحتوي على “كائنات” تم إنشاؤها أو تحريرها بواسطة تطبيقات الطرف الثالث. أي أن OLE يسمح للتطبيق بتصدير هذه “الكائنات” إلى تطبيق آخر للتحرير، ثم استيرادها مرة أخرى مع بعض المحتوى الإضافي.

في هذه المقالة، سنتحدث عن إدراج كائن OLE وتعيين خصائصه في مستند.

إدراج Ole كائن

إذا كنت تريد OLE كائن، استدعاء طريقة InsertOleObject وتمريرها ProgId صراحة مع غيرها من المعالم.

يوضح مثال التعليمات البرمجية التالية كيفية إدراج كائن OLE في مستند:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.insertOleObject("http://www.aspose.com", "htmlfile", true, true, null);
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObject.docx");

تعيين اسم الملف والامتداد عند إدراج OLE كائن

حزمة OLE هي طريقة قديمة و" غير موثقة " لتخزين الكائنات المضمنة إذا كان معالج OLE غير معروف.

كانت الإصدارات المبكرة Windows مثل Windows 3.1 و 95 و 98 تحتوي على تطبيق Packager.exe يمكن استخدامه لتضمين أي نوع من البيانات في المستند. تم استبعاد هذا التطبيق الآن من Windows، ولكن Microsoft Word والتطبيقات الأخرى لا تزال تستخدمه لتضمين البيانات إذا كان معالج OLE مفقودا أو غير معروف. تتيح فئة OlePackage للمستخدمين الوصول إلى خصائص OLE Package.

يوضح مثال الكود التالي كيفية تعيين اسم الملف والملحق واسم العرض لـ OLE Package:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
byte[] bs = FileUtils.readFileToByteArray(new File(getMyDir() + "Zip file.zip"));
try (ByteArrayInputStream stream = new ByteArrayInputStream(bs))
{
Shape shape = builder.insertOleObject(stream, "Package", true, null);
OlePackage olePackage = shape.getOleFormat().getOlePackage();
olePackage.setFileName("filename.zip");
olePackage.setDisplayName("displayname.zip");
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObjectWithOlePackage.docx");
}

الحصول على OLE كائن البيانات الخام

يمكن للمستخدمين الوصول إلى OLE بيانات الكائن باستخدام خصائص وطرق مختلفة لفئة OleFormat. على سبيل المثال، من الممكن الحصول على البيانات الأولية للكائن OLE أو مسار واسم الملف المصدر للكائن OLE المرتبط.

يوضح مثال التعليمات البرمجية التالية كيفية الحصول على OLE كائن البيانات الخام باستخدام طريقة GetRawData:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Shape oleShape = (Shape) doc.getChild(NodeType.SHAPE, 0, true);
byte[] oleRawData = oleShape.getOleFormat().getRawData();

إدراج OLE كائن كرمز

OLE يمكن أيضا إدراج الكائنات في المستندات كصور.

يوضح مثال الكود التالي كيفية إدراج كائن OLE كرمز. لهذا الغرض، تعرض فئة DocumentBuilder طريقة InsertOleObjectAsIcon.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.insertOleObjectAsIcon(getMyDir() + "Presentation.pptx", false, getImagesDir() + "Logo icon.ico",
"My embedded file");
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObjectAsIcon.docx");

يوضح مثال التعليمات البرمجية التالية كيفية إدراج كائن OLE مضمن كرمز من دفق في المستند:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
try(ByteArrayInputStream stream = new ByteArrayInputStream(FileUtils.readFileToByteArray(new File(getMyDir() + "Presentation.pptx"))))
{
builder.insertOleObjectAsIcon(stream, "Package", getImagesDir() + "Logo icon.ico", "My embedded file");
}
doc.save(getArtifactsDir() + "WorkingWithOleObjectsAndActiveX.InsertOleObjectAsIconUsingStream.docx");

إدراج الفيديو على الانترنت

يمكن إدراج الفيديو عبر الإنترنت في مستند ورد من علامة التبويب “Insert” > “Online Video”. يمكنك إدراج مقطع فيديو عبر الإنترنت في مستند في الموقع الحالي عن طريق استدعاء طريقة InsertOnlineVideo:

تقدم فئة DocumentBuilder أربعة أحمال زائدة من هذه الطريقة. أول واحد يعمل مع موارد الفيديو الأكثر شعبية ويأخذ URL من الفيديو كمعلمة. على سبيل المثال، يدعم الحمل الزائد الأول الإدراج البسيط لمقاطع الفيديو عبر الإنترنت من YouTube و فيميو الموارد.

يوضح مثال الكود التالي كيفية إدراج مقطع فيديو عبر الإنترنت من Vimeo في مستند:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.insertOnlineVideo("https://youtu.be/t_1LYZ102RA", 360.0, 270.0);
// We can watch the video from Microsoft Word by clicking on the shape.
doc.save(getArtifactsDir() + "DocumentBuilder.InsertVideoWithUrl.docx");

يعمل الحمل الزائد الثاني مع جميع موارد الفيديو الأخرى ويأخذ رمز HTML مضمن كمعلمة. قد يختلف رمز HTML لتضمين مقطع فيديو اعتمادا على الموفر، لذا اتصل بالموفر المعني للحصول على التفاصيل.

يوضح مثال الكود التالي كيفية إدراج مقطع فيديو عبر الإنترنت في مستند باستخدام رمز HTML هذا:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
String videoUrl = "https://vimeo.com/52477838";
String videoEmbedCode = "<iframe src=\"https://player.vimeo.com/video/52477838\" width=\"640\" height=\"360\" frameborder=\"0\" " +
"title=\"Aspose\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>";
byte[] thumbnailImageBytes = IOUtils.toByteArray(getAsposelogoUri().toURL().openStream());
BufferedImage image = ImageIO.read(new ByteArrayInputStream(thumbnailImageBytes));
// 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.getWidth(), image.getHeight());
doc.save(getArtifactsDir() + "DocumentBuilder.InsertOnlineVideoCustomThumbnail.docx");