ImageParamParser の POI 3.11 以降への対応

1,010 views
Skip to first unread message

seki

unread,
Feb 1, 2017, 8:12:50 PM2/1/17
to excella
関です。お世話になっております。

BlockRowRepeatParamParserの問題が解決しましたので ExCella Reports 1.10 にて POI 3.11 以降の動作検証を行っていましたところ、
POIのPictureのresizeメソッドの仕様が変わったことが原因で、ImageParamParserに問題が発生しました。

まず、ExCella ReportsのImageParamParserでは、scaleパラメータ未指定の場合は

  Double scale = 1.0;

と初期値 1.0 を詰め、

  Picture picture = drawing.createPicture( anchor, pictureIdx);
  picture
.resize( scale);

とresizeメソッドを実行されています。

POI 3.10.1 までのresizeメソッドは“元の画像ファイル”のサイズをもとにリサイズを行っているのでそれで問題なかったのですが、
3.11 からは“画像を差し込むセル”のサイズをもとにリサイズを行う仕様に変更されたようで、結果として元の画像のサイズで
差し込むことができなくなってしまいました。

それで色々試してみましたところ、元の画像のサイズで差し込む場合は

  picture.resize();

と引数無のresizeメソッドを実行すれば良いようでした。

その為、お手数ですがExcelテンプレートの$Iタグでscaleパラメータ未指定の場合は picture.resize(); を実行するように
ImageParamParserの仕様を変更することを検討していただけないでしょうか。

それと追加の要望ですが、POI 3.11 からPictureインターフェースに

  void resize(double scaleX, double scaleY);

と幅と高さのscaleをそれぞれ指定できるresizeメソッドが追加されました。
これが使えると助かる時がありますので、お手数ですがExcelテンプレートのパラメータで scaleX, scaleY を指定できる機能の追加も
検討していただけないでしょうか。

今回の内容は検証に時間がかかると思いますので、対応は急ぎではありません。
色々お手数をおかけしますが検討をお願い致します。

神園和秀

unread,
Feb 2, 2017, 8:11:16 PM2/2/17
to excella
情報、ありがとうございます。
次バージョンでの対応を検討します。

2017年2月2日木曜日 10時12分50秒 UTC+9 seki:
Reply all
Reply to author
Forward
0 new messages