Comments (15)
関連スレッド: https://groups.google.com/g/excella/c/xF0nbwsaht0/m/QdYPmsiZAQAJ
from excella-reports.
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.
(書き終える前に送信してしまった・・・)
- 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.
どのようなユースケースにおいて以下の修正を必要としているのかを教えていただきたいです。タグに固定で倍率を指定する、というよりはセルの大きさにフィットさせれば良い?
ユースケースとして、結合セル(行列の結合セル数が異なる)に対し画像を挿入する際などに現在のリサイズ処理では対応ができないと認識しています。
具体的には、
挿入画像サイズは縦横等倍、画像挿入対象セルが「行:4セル結合、列:2セル結合」だとすると、
現在のImageParamParserでは結合セルの始点(左上)のセルに対し、widthAdjustment・heightAdjustmentで調整した画像を挿入し、その後指定したscaleでリサイズするような形になっており、
・scaleで2より大きい数値を指定→セルから横にはみでる形になる。
・scaleで2を指定すると、下2行分の空白が発生する。
そのため、対象とするセルを「結合セルの始点(左上)のセル」だけにするのではなく、範囲指定可能にするか、元画像サイズをもとにリサイズする形が可能なように対応をお願いしたいです。
from excella-reports.
どのようなユースケースにおいて以下の修正を必要としているのかを教えていただきたいです。タグに固定で倍率を指定する、というよりはセルの大きさにフィットさせれば良い?
その他のケースとして、元画像のサイズのまま画像挿入したいケースも需要があると思います。
その場合、現状はタグを記載するセルの大きさで必ずリサイズされるため、セルのサイズ=画像のサイズにする必要が出てきます。
上記のケースではPOI3.10.1までと同様に「元画像サイズをもとにリサイズする」という形が指定できる方が望ましい認識です。
from excella-reports.
ユースケースとして、結合セル(行列の結合セル数が異なる)に対し画像を挿入する際などに現在のリサイズ処理では対応ができないと認識しています。
具体的には、
挿入画像サイズは縦横等倍、画像挿入対象セルが「行:4セル結合、列:2セル結合」だとすると、
現在のImageParamParserでは結合セルの始点(左上)のセルに対し、widthAdjustment・heightAdjustmentで調整した画像を挿入し、その後指定したscaleでリサイズするような形になっており、
・scaleで2より大きい数値を指定→セルから横にはみでる形になる。
・scaleで2を指定すると、下2行分の空白が発生する。
そのため、対象とするセルを「結合セルの始点(左上)のセル」だけにするのではなく、範囲指定可能にするか、元画像サイズをもとにリサイズする形が可能なように対応をお願いしたいです。
処理の詳細を書いてもらっていますが、問題を再現できるテストコード+期待する結果をシェアしていただきたいです。
一言"セルから横にはみ出る"といっても、数pxなのか大半がはみ出るのか、という違いがわからない以上、私の方でそれっぽく再現させる必要がありすぐには対応できません。
from excella-reports.
処理の詳細を書いてもらっていますが、問題を再現できるテストコード+期待する結果をシェアしていただきたいです。
一言"セルから横にはみ出る"といっても、数pxなのか大半がはみ出るのか、という違いがわからない以上、私の方でそれっぽく再現させる必要がありすぐには対応できません。
再現できるテストコードなどを添付します。
上記の事象(結合セルに対し、望む形での画像挿入ができないこと)を再現したものになります。
※期待する結果(行いたいこと)などはテンプレートに記載しております。
sample/src/sample
・SampleReport.java :テストソース
・テスト結果.xlsx :テスト結果
・テンプレート.xlsx :テストに使用したテンプレート
・画像.png :テストに使用した画像
from excella-reports.
確認しました。結局は結合セルにフィットする形でリサイズできれば良いのですよね?
50-fix-image-resize-on-merged-region
ブランチにプッシュした修正でいかがでしょうか。
from excella-reports.
確認しました。結局は結合セルにフィットする形でリサイズできれば良いのですよね?
50-fix-image-resize-on-merged-region
ブランチにプッシュした修正でいかがでしょうか。
結合セルに関するリサイズの件、ありがとうございます。確認し、問題なく処理されてました。
その他のケースとして、元画像のサイズのまま画像挿入したいケースも需要があると思います。
その場合、現状はタグを記載するセルの大きさで必ずリサイズされるため、セルのサイズ=画像のサイズにする必要が出てきます。
上記のケースではPOI3.10.1までと同様に「元画像サイズをもとにリサイズする」という形が指定できる方が望ましい認識です。
こちらもご対応いただくことは出来ないでしょうか?
テンプレート作成における利便性の問題になりますが、
今までは、セルサイズの影響を受けなかったため、
テンプレート作成時の画像挿入に関してセルを意識する必要はなかったと思います。
ですが、今後はセルサイズの影響を受けるため、
テンプレート作成時に、行列の調整を行い画像挿入セルを意識したテンプレート作成が求められる形になります。
利便性を上げるため、POI3.10.1までと同様に「元画像サイズをもとにリサイズする」方法での挿入も可能にならないでしょうか?
from excella-reports.
ImageParamParser: オリジナルサイズで画像を挿入するためのkeepSize属性を追加 (#50)
確認しました。
問題ありませんでした。
お手すきの際にmasterへマージして頂けますでしょうか?
リリースされましたら製品版へ反映いたします。
よろしくお願いします。
from excella-reports.
確認しました。
問題ありませんでした。
どういった確認をされたのか不明ですが、いくつかの課題があるためマージには少し時間が必要です。詳しくはPull Request #56 を参照してください。
from excella-reports.
過去のExcellaの挙動がそうであった以上、keepSize=trueをデフォルトにするのが良いのではないでしょうか。本件の課題をクリアし、masterへのマージはいつ頃をご予定でしょうか?
from excella-reports.
単にkeepSize=true
をデフォルトにしてしまうと #50 (comment) の要望を満たせなくなる問題があったため、画像リサイズの基準を設定出来るように変更しました。
デフォルトでは結合セルの場合はセル、結合していないセルの場合は元画像をリサイズの基準としています。
from excella-reports.
ExCella Reports v2.1にてリリースしました。
from excella-reports.
ExCella Reports v2.1では、デフォルトで画像がリサイズされないサイズで表示されるようになったことを確認いたしました。ご対応ありがとうございました。
from excella-reports.
Related Issues (20)
- RowRepeatParamParserのTODO:XSSFのRowBreakが正常に動作しない件は解決しているみたい HOT 1
- sampleプログラムのファイル出力先が固定でCドライブになっている。
- xlsxで、違うシート名で出力する際に印刷設定が引き継がれない
- sampleプログラムの日本語ファイル名が化けている
- BlockRowRepeatParamParserのエラー(POI 3.11以降、BRの中にBRを記述した場合)
- BlockRowRepeatParamParserを使用した際に、出力ファイルの最終列の幅が変わることがある HOT 1
- EclipseのMaven->Update Projectで最新の状態にならない
- POI 3.16対応
- POI3.16:行シフト先に結合セルが存在すると、結合が解除される HOT 3
- Eclipseの設定をGitから削除する
- "mvn test" Failed (JDK 11) HOT 2
- ライセンスについて HOT 3
- webhookによる通知テスト HOT 1
- webhookによる通知テスト
- README.md 「Excella Reports」と記載されている
- *RepeatParamParser should provide more helpful exception message when passing not array
- Improve code quality
- ReportProcessListener: メソッド参照・ラムダ式で指定できるようにしたい
- $BC[]タグもしくは$BR[]タグで指定した範囲内にExcel関数が入力されたセルがあると例外が発生します。 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from excella-reports.