EC-CUBE4の帳票で、ちょっと困った件があったので書こうと思います。
例えばですが、帳票の1カラム目に番号、2カラム目に商品名を入れたいとします。その時に商品名がもし想定外に長くてカラムの高さが1カラム目の高さを上まってしまう場合、こうなってしまいます。トホホ・・・。
1カラム目よりも2カラム目以降のセルの高さが大きくなってしまう場合にこうなってしまうようです。
どうしたものかと思っていたところ、Sさんに「その行の最大の高さをあらかじめ取得すればいいのでは?」とご助言頂いたのでやってみようと思ったところ、はたと手が止まりました。
TCPDFのMultiCellは、セルを描画する時に高さを取得しているので出力しないと高さが取れません。
これはどうすればと思い調べました・・・。
ありました、ホッ。
//文字列からセル高さを取得する
$h2 = $this->getStringHeight($w[$i2], $col, false, true, '', 1 );
結局このような感じで最大高さが取得できましたので、帳票の出力状態が改善できました。
foreach ($row2 as $key => $col) {
if ($h2 >= $cellMaxHeight) {
$cellMaxHeight = $h2;
}
//文字列からセル高さを取得する
$h2 = $this->getStringHeight($w[$i2], $col, false, true, '', 1 );
++$i2;
}
蛇足ですが、Cellを描画するときに使用している配列と最大高さを取得するときに使用している配列は同じものを使うことはできませんのであらかじめコピーしておかないといけません。
TCPDFもまだまだ奥深いです。