2011/02/09

画像の表示(URLによる画像の動的切替) (swiching images by URL)

レコードの値に応じて、画像の表示を動的に切り替える方法を説明します
以下の例では、EMPNOに応じて画像(顔写真)が切り替わっています。





【画像の準備】

今回はBIPのアプリケーションディレクトリに以下の画像ファイルを直接配置しました。ファイル名はEMPNOに対応しています(****部分)。
C:\OracleBI\oc4j_bi\j2ee\home\applications\xmlpserver\xmlpserver\emp****.jpg

※「http://windows2003srv:9704/xmlpserver/emp7458.jpg」等として画像ファイルを取得する環境となります。



【図の挿入】
Wordのメニュー「挿入→図→ファイルから」を選択し、ダミーの図を取り込みます(シェイプではなく、図を挿入する必要があります)。

ダミーの図のサイズは、実際に表示する画像とサイズを合わせておくことをお勧めします。リサイズも可能ですが、レイアウトのずれやリサイズ後の画像のつぶれなどに手間が割かれずに済みます。



【表示する画像の指定】
図のプロパティで「Web」タブを選択します。「代わりに表示する文字列」欄に、EMPNOに対応した画像ファイル名が得られる様、指定します。今回の設定は以下の通りです。
url:{concat('http://windows2003srv:9704/xmlpserver/emp', EMPNO, '.jpg')}




以上で作業は終了です。



【補足1:ファイル名の指定】
画像ファイルの指定で、ローカルのファイル名を直接指定することもできます。以下の書式を使用します。スラッシュの数に注意してください。
url:{'file:///C:/image/emp7458.jpg'}

正式にサポートされる動作かは不明ですが、実際には以下のようにファイル名のみを記入しても表示されます。Windows環境では、スラッシュではなく「¥」でも動作しました。
url:{'C:/image/emp7458.jpg'}
url:{'C:\image\emp7458.jpg'}



【補足2:画像のレイアウト】
手元の環境で検証した限りでは、行のデータを基に(行毎に)画像を切り替える場合、画像のレイアウトに「前面」「背面」は選択できない仕様のようです。「前面」を指定した場合、表示される画像ファイルが切り替わらず、1レコード目の画像がすべての行に繰り返し表示されてしまいます。



【補足3:画像がない場合の対応】
指定された画像ファイルの存在を判定する方法は無いようです。画像が存在することは運用で保証する必要があります。
回避策としては、データソース側に画像の有無をフラグで定義する方法が考えられます(フラグによる表示切り替えで「画像がありません」というメッセージ(または「Now Printing」の画像)を表示する実装)。


[ Summary ]
BIP can get images from outside of the template on its runtime.

1) Put a picture on the RTF.  Note: Autoshape does not work as placeholder.
2) Open "Web" tab on the picture property dialog.  Set "Alternative Text" as below:
url:{concat('http://windows2003srv:9704/xmlpserver/emp', EMPNO, '.jpg')}

File system is supported.  Note that there are three slashes after "file:".
url:{'file:///C:/image/emp7458.jpg'}

I'm not sure if it's supported or not though, the formulas below also work.
url:{'C:/image/emp7458.jpg'}
url:{'C:\image\emp7458.jpg'}

0 件のコメント:

コメントを投稿