ปัญหาการแสดงตัวอย่างวัตถุเมื่อเพิ่ม OleObjectFrame

คำนำ

เมื่อใช้ Aspose.Slides for PHP ผ่าน Java และคุณเพิ่ม OleObjectFrame ลงในสไลด์ จะมีข้อความ “EMBEDDED OLE OBJECT” แสดงบนสไลด์ผลลัพธ์ ข้อความนี้เป็นตามตั้งใจและ NOT a bug.

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับวัตถุ OLE ดูที่ Manage OLE.

คำอธิบายและวิธีแก้

Aspose.Slides แสดงข้อความ “EMBEDDED OLE OBJECT” เพื่อแจ้งว่าวัตถุ OLE ได้รับการเปลี่ยนแปลงและต้องอัปเดตภาพตัวอย่าง

ตัวอย่างเช่น หากคุณเพิ่มแผนภูมิ Microsoft Excel เป็น OleObjectFrame ลงในสไลด์ (ดูรายละเอียดเพิ่มเติมในบทความ “Manage OLE”) แล้วเปิดงานนำเสนอใน Microsoft PowerPoint คุณจะเห็นภาพนี้บนสไลด์:

OLE object message

หากคุณต้องการตรวจสอบและยืนยันว่าวัตถุ OLE ของคุณถูกเพิ่มลงในสไลด์ คุณต้องดับเบิลคลิกที่ข้อความ “EMBEDDED OLE OBJECT” หรือคุณสามารถคลิกขวาที่ข้อความแล้วเลือกตัวเลือก Object > Edit

OLE object > Edit

PowerPoint จากนั้นจะเปิดวัตถุ OLE ที่ฝังอยู่

OLE object data

สไลด์อาจยังคงแสดงข้อความ “EMBEDDED OLE OBJECT” อยู่ เมื่อคุณคลิกที่วัตถุ OLE การแสดงตัวอย่างสไลด์จะอัปเดตและข้อความ “EMBEDDED OLE OBJECT” จะถูกแทนที่ด้วยภาพจริงของวัตถุ OLE

OLE object preview

ตอนนี้คุณอาจต้องการบันทึกงานนำเสนอของคุณเพื่อให้มั่นใจว่าภาพของวัตถุ OLE จะอัปเดตอย่างถูกต้อง ด้วยวิธีนี้ หลังจากบันทึกงานนำเสนอแล้ว เมื่อคุณเปิดงานนำเสนออีกครั้ง คุณจะ NOT see the “EMBEDDED OLE OBJECT” message.

วิธีแก้ไขอื่น ๆ

วิธีแก้ 1: แทนที่ข้อความ “Embedded OLE Object” ด้วยภาพ

หากคุณไม่ต้องการลบข้อความ “EMBEDDED OLE OBJECT” ด้วยการเปิดงานนำเสนอใน PowerPoint แล้วบันทึกอีกครั้ง คุณสามารถแทนที่ข้อความด้วยภาพตัวอย่างที่คุณต้องการได้ โค้ดต่อไปนี้แสดงกระบวนการนี้:

$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 จะเปลี่ยนเป็นดังนี้:

New OLE object image

วิธีแก้ 2: สร้างส่วนเสริมสำหรับ PowerPoint

คุณยังสามารถสร้างส่วนเสริมสำหรับ Microsoft PowerPoint ที่จะอัปเดตวัตถุ OLE ทั้งหมดเมื่อคุณเปิดงานนำเสนอในโปรแกรมได้