مشكلة تغيير الكائن عند إضافة OleObjectFrame

الشرح والحل

تظهر Aspose.Slides رسالة Object Changed لإعلامك بأنه تم تغيير كائن OLE وأن صورة المعاينة يجب أن يتم تحديثها.

على سبيل المثال، إذا قمت بإضافة رسم بياني من Microsoft Excel كـ OleObjectFrame إلى شريحة (لمزيد من التفاصيل، انظر مقال إدارة OLE) ثم قمت بفتح العرض التقديمي في تطبيق Microsoft PowerPoint، سترى هذه الصورة على الشريحة:

استبدال جميع الصور بصور جديدة

todo:image_alt_text

إذا كنت تريد التحقق من تأكيد أنه تم إضافة كائن OLE الخاص بك إلى الشريحة، عليك النقر المزدوج على رسالة Object Changed، أو يمكنك النقر بزر الماوس الأيمن عليها والذهاب عبر كائن ورقة العمل > خيار تحرير.

todo:image_alt_text

ثم يقوم PowerPoint بفتح كائن OLE المدمج

todo:image_alt_text

قد تحتفظ الشريحة برسالة Object Changed. بمجرد النقر على كائن OLE، يتم تحديث معاينة الشريحة ويتم استبدال رسالة Object Changed بالصورة الفعلية لكائن OLE.

todo:image_alt_text

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

حلول أخرى

الحل 1: استبدال رسالة Object Changed بصورة

إذا كنت لا تريد إزالة رسالة Object Changed بفتح العرض التقديمي في PowerPoint ثم حفظه، يمكنك استبدال الرسالة بصورة المعاينة المفضلة لديك. توضح هذه الأسطر من التعليمات البرمجية العملية:

using (Presentation pres = new Presentation("embeddedOle.pptx"))
{
   ISlide slide = pres.Slides[0];
   IOleObjectFrame oleObjectFrame = (IOleObjectFrame)slide.Shapes[0];
    
   IPPImage oleImage = pres.Images.AddImage(File.ReadAllBytes("my_image.png"));
   oleObjectFrame.SubstitutePictureTitle = "My title";
   oleObjectFrame.SubstitutePictureFormat.Picture.Image = oleImage;
   oleObjectFrame.IsObjectIcon = false;
    
   pres.Save("embeddedOle-newImage.pptx", SaveFormat.Pptx);
}

الشريحة التي تحتوي على OleObjectFrame تتغير بعد ذلك إلى هذا:

todo:image_alt_text

الحل 2: إنشاء إضافة لـ PowerPoint

يمكنك أيضًا إنشاء إضافة لـ Microsoft PowerPoint تقوم بتحديث جميع كائنات OLE عند فتح العروض التقديمية في البرنامج.