OleObjectFrameを追加した際のオブジェクト変更問題
問題の説明
開発者がAspose.Slides for Javaを使用してスライドにOleObjectFrameを追加すると、出力スライドにOLE Objectの代わりにObject Changedメッセージが表示されます。ほとんどのAspose.Slides for Javaの顧客は、これはAspose.Slides for Javaのバグまたはエラーだと考えています。
批判的分析と説明
まず最初に、スライドにOleObjectFrameを追加した後にAspose.Slides for Javaによって表示されるObject Changedメッセージは、Aspose.Slides for Javaのエラーやバグではありません。これは、オブジェクトが変更されたことをユーザーに通知する情報またはメッセージです。
例えば、スライドにOleObjectFrameとしてMicrosoft Excel Chartを追加すると(OleObjectFrameをスライドに追加する際の詳細とコードスニペットについては、こちらをクリック)、次にそのプレゼンテーションファイルをMS PowerPointで開くと、スライド(OLE Objectが追加された場所)は次のようになります:
図: OLE Objectが追加された後にObject Changedメッセージを表示するスライド
これはエラーではなく、OLEオブジェクトは依然としてスライドに追加されています。これをテストしたい場合は、Object Changedメッセージをダブルクリックするか、右クリックして次のようにWorksheet Object -> Editオプションを選択します:
図: OLE Objectを編集するためのEditオプションを選択
ポップアップメニューのEditオプションを選択すると、Embedded OLE Objectがeditableな形式で表示されることがわかります:
図: 編集可能な形式のOLE Object
MS PowerPointの左ペインには、スライドのプレビューが表示される際に、依然としてObject Changedメッセージが表示されます。OLE Objectをクリックすると、スライドのプレビューも変更され、Changed ObjectメッセージがOLE Objectの画像に置き換えられます:
図: OLE Object画像の更新
今、あなたはMS PowerPointを使用してプレゼンテーションファイルを保存する必要があります。これにより、OLE Objectの画像が更新されます。プレゼンテーションを保存して再度MS PowerPointで開くと、Object Changedメッセージが表示されなくなります。
さらなる解決策
上記の批判的分析では、MS PowerPointでプレゼンテーションファイルを開いて保存することで、OLE Objectの画像を更新できることを示しました。しかし、Object Changedメッセージに対処するための2つの解決策があります。
1つ目の解決策: オブジェクト変更メッセージを画像に置き換える
Object Changedメッセージが気に入らない場合は、そのメッセージを自分の画像に置き換えることもできます。プレゼンテーションに任意の画像を追加し、その追加した画像のIDを使用してObject Changedメッセージを置き換えることができます。
これを実現するために、スライドにOleObjectFrameを追加した後、アプリケーションにこれらのコードの行を追加することができます。
例
//Set the picture | |
IPPImage imgx=null; | |
try{ | |
imgx = pres.getImages().addImage(new FileInputStream(new File( "aspose1.jpg"))); | |
} | |
catch(IOException e){} | |
//Assigning the picture Id of newly added picture to the Picture Id of | |
//OleObjectFrame where oof represents an OleObjectFrame | |
oof.getSubstitutePictureFormat().getPicture().setImage(imgx); |
上記の行をアプリケーションに追加した後、OleObjectFrameを含むスライドは次のようになります:
図: 画像で置き換えられたObject Changedメッセージ
2つ目の解決策: MS PowerPoint用のアドオンを作成する
MS PowerPoint用のアドオンを作成し、プレゼンテーションをMS PowerPointで開いたときにすべてのOLEオブジェクトを更新することも試すことができます。