مشکل پیش‌نمایش شیء هنگام افزودن OleObjectFrame

مقدمه

با استفاده از Aspose.Slides برای PHP از طریق Java، وقتی یک OleObjectFrame را به یک اسلاید اضافه می‌کنید، پیام «EMBEDDED OLE OBJECT» روی اسلاید خروجی نمایش داده می‌شود. این پیام عمدی است و خطایی نیست.

برای اطلاعات بیشتر درباره کار با اشیاء OLE، به Manage OLE مراجعه کنید.

توضیح و راه‌حل

Aspose.Slides پیام «EMBEDDED OLE OBJECT» را برای اطلاع‌رسانی اینکه شیء OLE تغییر کرده و تصویر پیش‌نمایش باید به‌روزرسانی شود، نشان می‌دهد.

به عنوان مثال، اگر یک نمودار Microsoft Excel را به عنوان یک OleObjectFrame به اسلاید اضافه کنید (برای جزئیات بیشتر به مقاله «Manage OLE» مراجعه کنید) و سپس ارائه را در Microsoft PowerPoint باز کنید، این تصویر را روی اسلاید می‌بینید:

پیام شیء OLE

اگر می‌خواهید تأیید کنید که شیء OLE شما به اسلاید اضافه شده است، باید روی پیام «EMBEDDED OLE OBJECT» دوبار کلیک کنید، یا می‌توانید روی آن کلیک راست کنید و گزینه Object > Edit را انتخاب کنید.

شیء OLE > ویرایش

PowerPoint سپس شیء OLE توکار را باز می‌کند.

داده‌های شیء OLE

اسلاید ممکن است پیام «EMBEDDED OLE OBJECT» را نگه دارد. پس از کلیک روی شیء OLE، پیش‌نمایش اسلاید به‌روزرسانی می‌شود و پیام «EMBEDDED OLE OBJECT» با تصویر واقعی شیء OLE جایگزین می‌شود.

پیش‌نمایش شیء OLE

حالا ممکن است بخواهید ارائه خود را ذخیره کنید تا تصویر شیء OLE به‌درستی به‌روزرسانی شود. به این ترتیب، پس از ذخیرهٔ ارائه و باز کردن مجدد آن، پیام «EMBEDDED OLE OBJECT» را مشاهده نخواهید کرد.

راه‌حل‌های دیگر

راه‌حل ۱: جایگزینی پیام “Embedded OLE Object” با یک تصویر

اگر نمی‌خواهید با باز کردن ارائه در PowerPoint و سپس ذخیرهٔ آن، پیام «EMBEDDED OLE OBJECT» را حذف کنید، می‌توانید پیام را با تصویر پیش‌نمایش دلخواه خود جایگزین کنید. این خطوط کد فرآیند را نشان می‌دهند:

$presentation = new Presentation("embeddedOLE.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $oleFrame = $slide->getShapes()->get_Item(0);

    // یک تصویر به منابع ارائه اضافه کنید.
    $image = Images::fromFile("myImage.png");
    $oleImage = $presentation->getImages()->addImage($image);
    $image->dispose();

    // عنوان و تصویر پیش‌نمایش شیء OLE را تنظیم کنید.
    $oleFrame->setSubstitutePictureTitle("My title");
    $oleFrame->getSubstitutePictureFormat()->getPicture()->setImage($oleImage);
    $oleFrame->setObjectIcon(false);

    $presentation->save("embeddedOLE-newImage.pptx", SaveFormat::Pptx);
} finally {
    if (!java_is_null($presentation)) {
        $presentation->dispose();
    }
}

اسلاید حاوی OleObjectFrame سپس به این شکل تغییر می‌کند:

تصویر جدید شیء OLE

راه‌حل ۲: ایجاد افزونه‌ای برای PowerPoint

همچنین می‌توانید یک افزونه برای Microsoft PowerPoint ایجاد کنید که تمام اشیاء OLE را هنگام باز کردن ارائه‌ها در برنامه به‌روزرسانی کند.