ECCUBE2.13.1 納品書が複数枚に渡る時の商品名改行でレイアウトが崩れる問題

ECCUBE2.13.1 で 納品書を出力する際、商品名が長いとセル内で改行されるが、注文点数が多い場合には2ページ目に繰り越され、商品名が改行された分、行がずれてしまい、大幅にレイアウトが崩れる現象。

以前にどんな場合も2行になるように、プログラムを改変したが、
商品名に英字が入る場合にうまく動作していない例があった。

変更したのは、

/data/class/SC_Fpdf.php

改善前
$arrOrder[$i][0] = $this->arrDisp[‘product_name’][$i].’ / ‘;
$arrOrder[$i][0] .= $this->arrDisp[‘product_code’][$i].’ / ‘;

商品名が長い場合はコードの後ろに末尾に何も入れず、短い場合は改行コードを入れて
確実に2行になるようにして、割り切れる行数にすることでレイアウト崩れを防ぐ。
という条件分岐を入れてみました。

if(strlen( $this->arrDisp[‘product_name’][$i].’ / ‘ )>82){
$arrOrder[$i][0] = $this->arrDisp[‘product_name’][$i].’ / ‘;
$arrOrder[$i][0] .= $this->arrDisp[‘product_code’][$i];
} else {
$arrOrder[$i][0] = $this->arrDisp[‘product_name’][$i].’ / ‘;
$arrOrder[$i][0] .= $this->arrDisp[‘product_code’][$i].”\n “;
}

82バイトは適当に入れているだけなので、正しく改行されるとは限りません。
また、英字が連続する場合などの条件によって、左右されることがあるので
厳密にはもう少し細かい条件を設定する必要があるでしょう。

とりあえず、これで様子を見ます。
┐(´д`)┌

投稿者: tairamami

仕事はウェブ制作&開発・印刷デザイン。ブログはランニングやトライアスロン中心です。[不定期更新]

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)