2024/01/27

DXL Step-by-Step:#26)イメージリソースの DXL

DXL 活用の調査・検証で、実現できたことや発見したことご紹介する『DXL Step-by-Step』シリーズの第 26 回です。前回までは段落(par ノード)内に配置されるオブジェクトとして、文字(テキスト)を配置し、その装飾について紹介しました。今回は別のオブジェクト、イメージリソースについてまとめます。

LotusScript 標準の NotesRichText 関連のクラスでは、イメージリソースをはじめ画像をインライン(見える状態)で貼り付けることができません。DXL を使えばそれが可能となり、Notes の可能性を広げることになりますね。


DXL の確認

まずは、イメージリソースを貼り付けたリッチテキストの DXL を確認しましょう。単にイメージリソースを貼り付けた場合とプロパティでサイズを変更した場合を例にします。

このリッチテキストを DXL に変換すると次のようになります。

まずはノードの構成です。段落 par ノードの下に picture ノードがあり、インラインイメージを表しています。その下に imageref ノードがあり、属性でイメージリソース名が指定されていることがわかります。構造はシンプルですね。


画像サイズとスケールの指定

picture ノードの属性で画像のサイズを指定しています。

width と height が画像のピクセル数で、スケールを設定した場合には scaledwidth と scaledheight が設定されています。単位が % ではなく、インチなのが厄介ですね...

試しに、scaledwidth='268px' や scaledwidth='200%' と記述した DXL を作成してインポートしましたが、どちらもエラーとなりました。プロパティボックスでは % 指定ですが、内部的にはインチに変換して保持しているということなのでしょう。


画像サイズの謎

今回実験に使用したイメージリソースの画像サイズは 134 x 76 ピクセルでした。DXL の width と height がその値となっているのは当たり前です。ただ、イメージリソース側に画像サイズを持っているのに、なぜ必要なのか疑問です。

そこで、イメージリソースをサイズの違う別の画像に差し替えて文書を表示すると、元の画像サイズ  134 x 76 ピクセルで差し替えられた画像が表示されました。

小さいほうの画像のプロパティを確認したところ、スケールが 100% ではなくなっていました。この結果より、width と height の属性でも拡大/縮小に利用できそうであることがわかります。


画像サイズ指定のテスト

では、テスト的な DXL をインポートして挙動を確認しましょう。

テストする項目は、

  1. width と height の設定は必須か?
  2. width と height は拡大/縮小に利用できるか?
  3. scaledwidth と scaledheight だけでも有効か?

の 3 点です。

インポートする DXL は次の通りです。

この DXL は、エラーなくインポートでき、結果は希望通りと言えます。width と height を設定しない場合は、イメージリソース通りのサイズで表示され、それ以外は指定したサイズで表示されました。なかなか柔軟に動いてくれますね。

この DXL からインポートした文書を再度 DXL に変換したところテストで作成した DXL のままでした。最初に紹介した DXL では、width と scaledwidth 両方が設定されていました。これはノーツクライアントが付加したものであり、ドミノオブジェクト的には双方の指定が必須ではないことがわかりますね。

前回 DXL Step-by-Step 次回


0 件のコメント:

コメントを投稿