ラベル Image/画像 の投稿を表示しています。 すべての投稿を表示
ラベル Image/画像 の投稿を表示しています。 すべての投稿を表示

2011/06/06

シェイプによるグラフ描画 その2 (Graph and shape part 2)

シェイプのサイズや位置を変更してグラフを表現するサンプルや事例は多数あります。以下のURLでは、シェイプの用法の参考になるサンプルが説明されています。
http://blogs.oracle.com/xmlpublisher/entry/competent_shapes_1
http://blogs.oracle.com/xmlpublisher/entry/shape_up

今回はこれらのメジャーな機能ではなく、シェイプの利用の中でもあまり注目されることの無い「回転 (rotate)」を取り上げます。
そもそも回転の使用は通常、稀です。今回、かなり無理をして検討しましたが、独自デザインのゲージを作成する以外には用途が思い当たりませんでした。

【カスタムゲージ】
以下のサンプルでは、半円のシェイプを使用しています。下半分には、白色で塗りつぶした同一サイズの半円シェイプを前面に配置しています。
<?shape-rotate:(SAL div 5000)*180; 'center/center'?>
Figure 1: Custom gauge drawing 


下半分の白色の半円を赤く縁取って再度以下に示します。
Figure 2: Custom gauge drawing (red dots: hidden shapes)


【カスタムゲージ その2】
以下のサンプルでは、図と直線を組み合わせて燃料計に似たゲージを描画します。在庫量、各種のパフォーマンスなどを視覚的に一覧する際、採用を検討してみてください。
<?shape-rotate:(SAL div 5000)*90; 'right/bottom'?>


テンプレートはこちらからダウンロードできます。


[Summary]
There are many blogs that explain shape drawing on rtf template.  The most commons are:


Apart from those major blogs, we focus on shape-rotate.  I suppose none of you have paid attention on it.
The sample above shows how to draw the custom gauge with shape-rotate.  Please see Figure 1 and 2.  Figure 3 is the sample of bitmap image with line shape.


The rtf template is available here.

2011/06/03

シェイプによるグラフ描画 (Graph and shape)

BI Publisher はMS-Wordのシェイプをサポートしています。シェイプを使用したグラフ描画はマニュアルや各種のブログにも紹介されています。
以下のマニュアルを参照して下さい。
http://download.oracle.com/docs/cd/E21764_01/bi.1111/e13881/T421739T481157.htm#T481174


【基本的な使用方法】
シェイプのプロパティを開き、Webタブにサイズを割合で設定します。以下の例は、シェイプのX幅をSAL/5000 の値で変化させます。
<?shape-size-x:SAL div 5000?>

シェイプを組み合わせることで、ある程度のグラフ表現が可能になります。以下に描画の例を示します。
Figure 1: Shape drawing sample


テンプレートはこちらからダウンロードできます。


[Summary]
BI Publisher supports MS-Word shape drawing.  By controlling the size of shape, you can show simple graph inside data table (or anywhere).


The manual describes this feature in detail.
http://download.oracle.com/docs/cd/E21764_01/bi.1111/e13881/T421739T481157.htm#T481174

The basic usage is very simple.  Open the property of shape, then put the following code in its web tab.


Figure 1 is my sample.  You can download the rtf template from here.

2011/03/10

QRコード (QR code)

QRコードの差込表示を検証します。
BI Publisher本体にはQRコードを生成する機能が実装されていません。今回のサンプルでは、QRコードの生成にはGoogle Chart APIを使用します。なお、画像の挿入については「画像の表示(URLによる画像の動的切替)」を併せて参照してください。
※帳票出力のプロダクトとして仮にも「Publisher」の名を冠するのであれば、QRコード程度の機能実装はしておいてほしいものです。


テンプレートに200px × 200px の画像を用意し、Web欄に以下のソースを記載します。
url:{'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://yahoo.co.jp/'}

テンプレート上の画像はレイアウトに合わせて適宜調整します。実行結果は以下の通りです。





値を動的に埋め込む場合、以下の書式では実行時に列(QRY_TEXT)の値を受け渡すことができませんでした。
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', QRY_TEXT, '%22')}


試行錯誤の末、一度列の値を変数に代入することで回避できました。フィールドに以下のコードを記述し、列QRY_TEXTの値を変数valTextに代入します。
<xsl:variable name="valText"><?QRY_TEXT?></xsl:variable>

画像のWebタブにて、以下のように設定します。
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', $valText, '%22')}



なお、URLを生成する際は、URLエンコードを終えておく必要があります。


【補足】
手元の環境でQRコードをPDFに出力し、印刷を行った限りでは、出力精度に問題は認められませんでした。しかしながら、商用サービスでの運用に際しては、事前に出力結果の検査を行うことをお勧めします。


[ Summary]
The example above gets QR code from Google API.  Put a dummy image (200px * 200px) and write the code on its Web tab.  i.e. BI Publisher handles QR code as image.
url:{'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://yahoo.co.jp/'}

The code below doesn't work.
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', QRY_TEXT, '%22')}

Workaround:
1. put your value into a variable.
<xsl:variable name="valText"><?QRY_TEXT?></xsl:variable>

2. On the Web tab of dummy image, put the code below.  The variable valText is set instead of data element QRY_TEXT.
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', $valText, '%22')}

2011/03/04

ロゴの変更 (Replace the header image)

画面上部のORACLEのロゴを(自社/自社製品のロゴなどに)変更する場合は、以下のファイルを置き換えます(標準構成の場合)。置き換えるイメージのサイズは、オリジナルに合致させて下さい。

【10.1.3】
bi_home\bi\oc4j_bi\j2ee\home\applications\xmlpserver\xmlpserver\xdo\images\oracle.gif
(155px * 20px)

【11.1.1】
middleware_home\user_projects\domains\bifoundation_domain\servers\bi_server1\tmp\_WL_user\bipublisher_11.1.1.3.0\rww81x\war\resource\blafplus\branding\oracleLogo.png
(119px * 25px)

11gでロゴを入れ替えた結果は以下の通りです。




また、BI Publisher 10.1.3.4.1では、ヘッダ部をユーザから完全に隠蔽する機能が追加されています。
手順は、ファイル<BI Publisher repository>/Admin/Configuration/xmlp-server-config.xml に以下の設定を追加し、再起動するだけです。

<property name="DISPLAY_HEADER_LOGO_MENU" value="false"/>

※なお、画像の差し替えに際しては著作権およびサポート上の問題がない旨をSRにて都度、確認して下さい。

参考URL: (マニュアル(新機能ガイド))

http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e14667/toc.htm#BABEHCCG




[ Summary ]
To change ORACLE logo image, replace the image files listed above.  The pixel size of new image should be same as the original.


If you use 10.1.3.4, you can remove the whole header region.  Add following setting on <BI Publisher repository>/Admin/Configuration/xmlp-server-config.xml
<property name="DISPLAY_HEADER_LOGO_MENU" value="false"/>


Note: Before you replace the image, you should better ask Oracle Support about copyright and support issue always.

Refer the url below for more details. (BI Publisher New Features Guide)
http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e14667/toc.htm#BABEHCCG

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'}

2011/02/08

画像の切り替え (swiching images)

BI Publisherで動的に画像を切り替える方法を説明します。
以下のサンプルでは、SAL列の値によって右端の列の画像(矢印)を切り替えています。

【IFフィールドの設定】
画像の表示/非表示の切り替えはブロック単位のIFフィールドを使用します。今回使用したRTFテンプレートは以下のように設定されています。


切り替えに関わる設定は「Performance」列のフィールドに記載されています。それぞれの内容は以下の通りです。
[if-1]: <?if:SAL>=2000?>
[if-2]: <?if:SAL>=1000 and SAL<2000 ?>
[if-3]: <?if:SAL<1000 ?>
[eif]:  <?end if?>



【図の配置について】
テンプレートの作成においては画像(またはシェイプ)とIFフィールドの位置関係が厳密に問われます。
精緻な配置は手間がかかるため、「図の書式設定」または「オートシェイプの書式設定」ダイアログにて「行内」のレイアウトを選択し、左右位置はインデントと空白文字で調整することをお勧めします。これにより、実作業における手間(トライ&エラー)を減らすことができます。
今回の例では、「Performance」列のインデントと、矢印の前にスペースを1つ入力することで位置を調整しています。



【図の配置について:補足】
レイアウトに「行内」ではなく「前面」などを選択した場合にはIFフィールドと画像の位置関係に注意が必要です。具体的には、画像の左上の頂点(Top-Left)がifフィールドよりも下に位置しなければなりません。
以下の例では、1番目と2番目は表示が切り替わりません。3番のみが意図した通りに表示が切り替わります。
※赤い線が画像の境界です。





今回の元ネタ: より詳細なサンプルがあります。
http://blogs.oracle.com/xmlpublisher/2008/08/competent_shapes_1.html


次回は表示する画像の動的な切り替えを検証します。



[ Summary ]
If you want to switch images with data, see the second figure.  The first figure shows the result.  This sample switches three auto-shapes (green, gray, and red).  The settings are:
[if-1]: <?if:SAL>=2000?>
[if-2]: <?if:SAL>=1000 and SAL<2000 ?>
[if-3]: <?if:SAL<1000 ?>
[eif]:  <?end if?>

You need to put shapes exactly between each "if" and "end if".  To avoid irritation, "In line with text" layout option is recommended.