Giter Club home page Giter Club logo

Comments (15)

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

関連スレッド: https://groups.google.com/g/excella/c/xF0nbwsaht0/m/QdYPmsiZAQAJ

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

Picture#resizeは以下の制約があり、デフォルトフォントがArial 10pt for .xls and Calibri 11pt for .xlsxでない場合は指定した倍率よりも縦or横に広がります。$Iタグのscaleは記載していただいたとおりPicture#resizeを使用するため、この制約の影響を受けます(POI 3.10以前から)。

Please note, that this method works correctly only for workbooks with the default font size (Arial 10pt for .xls and Calibri 11pt for .xlsx). If the default font is changed the resized image can be streched vertically or horizontally.
https://poi.apache.org/apidocs/4.0/org/apache/poi/ss/usermodel/Picture.html#resize-double-double-

こちらの事項はリファレンス(https://excella-core.github.io/excella-reports/reference/index.html) の制限事項に記載されているとおりです。

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

(書き終える前に送信してしまった・・・)

  • POI3.10.1まで:Picture#resize(double)は元画像サイズをもとにリサイズ
  • POI3.11以降:画像を差し込むセルのサイズをもとにリサイズ

上記の変更はPOIのBug#55967(https://bz.apache.org/bugzilla/show_bug.cgi?id=55967) の修正による物かと思いますが、リサイズ後の画像サイズがセルの大きさによって異なることはリファレンスにも記載済みのため、特に修正は考えていません。

どのようなユースケースにおいて以下の修正を必要としているのかを教えていただきたいです。タグに固定で倍率を指定する、というよりはセルの大きさにフィットさせれば良い?

  • パラメータtoCellを追加(toCell=画像の始点を起点(0)とした画像出力領域の終了セル行:画像の始点を起点(0)とした画像出力領域の終了セル列)
  • ImageParamParser#replaceImageValue内のClientAnchor(row2、col2)にパラメータtoCellの値を設定する
  • ImageParamParserのパラメータscaleが未指定、若しくは1(1.0)の場合はpicture.resize();を実行する処理を追加

from excella-reports.

tsuda-bb avatar tsuda-bb commented on June 29, 2024

どのようなユースケースにおいて以下の修正を必要としているのかを教えていただきたいです。タグに固定で倍率を指定する、というよりはセルの大きさにフィットさせれば良い?

ユースケースとして、結合セル(行列の結合セル数が異なる)に対し画像を挿入する際などに現在のリサイズ処理では対応ができないと認識しています。
具体的には、
挿入画像サイズは縦横等倍、画像挿入対象セルが「行:4セル結合、列:2セル結合」だとすると、
現在のImageParamParserでは結合セルの始点(左上)のセルに対し、widthAdjustment・heightAdjustmentで調整した画像を挿入し、その後指定したscaleでリサイズするような形になっており、
・scaleで2より大きい数値を指定→セルから横にはみでる形になる。
・scaleで2を指定すると、下2行分の空白が発生する。
そのため、対象とするセルを「結合セルの始点(左上)のセル」だけにするのではなく、範囲指定可能にするか、元画像サイズをもとにリサイズする形が可能なように対応をお願いしたいです。

from excella-reports.

tsuda-bb avatar tsuda-bb commented on June 29, 2024

どのようなユースケースにおいて以下の修正を必要としているのかを教えていただきたいです。タグに固定で倍率を指定する、というよりはセルの大きさにフィットさせれば良い?

その他のケースとして、元画像のサイズのまま画像挿入したいケースも需要があると思います。
その場合、現状はタグを記載するセルの大きさで必ずリサイズされるため、セルのサイズ=画像のサイズにする必要が出てきます。
上記のケースではPOI3.10.1までと同様に「元画像サイズをもとにリサイズする」という形が指定できる方が望ましい認識です。

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

ユースケースとして、結合セル(行列の結合セル数が異なる)に対し画像を挿入する際などに現在のリサイズ処理では対応ができないと認識しています。
具体的には、
挿入画像サイズは縦横等倍、画像挿入対象セルが「行:4セル結合、列:2セル結合」だとすると、
現在のImageParamParserでは結合セルの始点(左上)のセルに対し、widthAdjustment・heightAdjustmentで調整した画像を挿入し、その後指定したscaleでリサイズするような形になっており、
・scaleで2より大きい数値を指定→セルから横にはみでる形になる。
・scaleで2を指定すると、下2行分の空白が発生する。
そのため、対象とするセルを「結合セルの始点(左上)のセル」だけにするのではなく、範囲指定可能にするか、元画像サイズをもとにリサイズする形が可能なように対応をお願いしたいです。

処理の詳細を書いてもらっていますが、問題を再現できるテストコード+期待する結果をシェアしていただきたいです。
一言"セルから横にはみ出る"といっても、数pxなのか大半がはみ出るのか、という違いがわからない以上、私の方でそれっぽく再現させる必要がありすぐには対応できません。

from excella-reports.

tsuda-bb avatar tsuda-bb commented on June 29, 2024

処理の詳細を書いてもらっていますが、問題を再現できるテストコード+期待する結果をシェアしていただきたいです。
一言"セルから横にはみ出る"といっても、数pxなのか大半がはみ出るのか、という違いがわからない以上、私の方でそれっぽく再現させる必要がありすぐには対応できません。

再現できるテストコードなどを添付します。
上記の事象(結合セルに対し、望む形での画像挿入ができないこと)を再現したものになります。
※期待する結果(行いたいこと)などはテンプレートに記載しております。

sample/src/sample
・SampleReport.java  :テストソース
・テスト結果.xlsx   :テスト結果
・テンプレート.xlsx :テストに使用したテンプレート
・画像.png :テストに使用した画像

sample.zip

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

確認しました。結局は結合セルにフィットする形でリサイズできれば良いのですよね?
50-fix-image-resize-on-merged-regionブランチにプッシュした修正でいかがでしょうか。

from excella-reports.

tsuda-bb avatar tsuda-bb commented on June 29, 2024

確認しました。結局は結合セルにフィットする形でリサイズできれば良いのですよね?
50-fix-image-resize-on-merged-regionブランチにプッシュした修正でいかがでしょうか。

結合セルに関するリサイズの件、ありがとうございます。確認し、問題なく処理されてました。

その他のケースとして、元画像のサイズのまま画像挿入したいケースも需要があると思います。
その場合、現状はタグを記載するセルの大きさで必ずリサイズされるため、セルのサイズ=画像のサイズにする必要が出てきます。
上記のケースではPOI3.10.1までと同様に「元画像サイズをもとにリサイズする」という形が指定できる方が望ましい認識です。

こちらもご対応いただくことは出来ないでしょうか?
テンプレート作成における利便性の問題になりますが、
今までは、セルサイズの影響を受けなかったため、
テンプレート作成時の画像挿入に関してセルを意識する必要はなかったと思います。

ですが、今後はセルサイズの影響を受けるため、
テンプレート作成時に、行列の調整を行い画像挿入セルを意識したテンプレート作成が求められる形になります。

利便性を上げるため、POI3.10.1までと同様に「元画像サイズをもとにリサイズする」方法での挿入も可能にならないでしょうか?

from excella-reports.

nakamura-bb avatar nakamura-bb commented on June 29, 2024

ImageParamParser: オリジナルサイズで画像を挿入するためのkeepSize属性を追加 (#50)

確認しました。
問題ありませんでした。

お手すきの際にmasterへマージして頂けますでしょうか?
リリースされましたら製品版へ反映いたします。

よろしくお願いします。

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

@nakamura-bb

確認しました。
問題ありませんでした。

どういった確認をされたのか不明ですが、いくつかの課題があるためマージには少し時間が必要です。詳しくはPull Request #56 を参照してください。

from excella-reports.

skimura-bb avatar skimura-bb commented on June 29, 2024

過去のExcellaの挙動がそうであった以上、keepSize=trueをデフォルトにするのが良いのではないでしょうか。本件の課題をクリアし、masterへのマージはいつ頃をご予定でしょうか?

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

単にkeepSize=trueをデフォルトにしてしまうと #50 (comment) の要望を満たせなくなる問題があったため、画像リサイズの基準を設定出来るように変更しました。

デフォルトでは結合セルの場合はセル、結合していないセルの場合は元画像をリサイズの基準としています。

from excella-reports.

maruTA-bis5 avatar maruTA-bis5 commented on June 29, 2024

ExCella Reports v2.1にてリリースしました。

from excella-reports.

skimura-bb avatar skimura-bb commented on June 29, 2024

ExCella Reports v2.1では、デフォルトで画像がリサイズされないサイズで表示されるようになったことを確認いたしました。ご対応ありがとうございました。

from excella-reports.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.