【EC-CUBE】納品書をPDFで出したらレイアウトが崩壊してるんですけどー

IRS 1040 Tax Form Being Filled Out
photo credit: kenteegardin via photopin cc

こんにちは、えんぞーです。

EC-CUBEで躓いた部分があったのでメモします。

今回の問題は、受注処理で納品書を印刷するときに発生しました。

納品書のレイアウトが崩れる

レイアウトが崩れるって言うのが正しいのか分からないのですが、一目見ておかしいと思うレベルで崩れます。

どんな感じかというと↓こんな感じ。

screenshot_57

色々調べてみたのだけれどなかなか求めている答えが見つからない・・・。

そもそも改ページのかかる場所の調整すれば良いとかの問題では無く、もっと根本的な部分が問題になっていそう。

列の途中で改ページになっているところを見ると、一列として出力出来ると考えて行を追加したはずが商品名が長い事が原因でに二行分のスペースが発生し、その時改ページの領域に引っかかってとんでもない所で改ページされている模様。

この認識自体合っているかどうかは不明なのだけれど、とにかく二行にならないようにすれば良いかと思いました。

が、商品明細という情報の性質上下手に情報を削るわけにもいかなかったので逆に必ず二行になるようにしてみた。

納品書の商品名部分を適当なところで改行する

根本的な解決では無いのですが、急場をしのげればと言う事で商品名の行数を固定する事で安定した箇所で改ページになるように仕向けます。

ただ、この場合もっと長い商品名とか出てくるとまた同じ事になりそう。

変更箇所ですが、「/data/class/SC_Fpdf.php」を直接編集してしまいます。

EC-CUBEのバージョンは「2.13.1」になります。

これを↓この様に修正

これでMultiCellを通ったときに「商品名 / 商品番号」の後に改行が追加されます。

‘n’ではなく、”n”にしないとそのまま文字列として出てしまいますので注意です。

この状態で同じ納品書を出してみると、

screenshot_58

このように問題なく納品書が出力されました。

これであれば1セル分の高さに変動が出ないので同じ所で改ページされるかな・・・といった具合になります。

先ほども書きましたが、商品名+商品番号の行が1行以上になる場合はまた違った結果になるかと思います。

う~ん・・・高さが変動するままこの問題を解決するにはどうしたら良いのでしょうね・・・。

兎にも角にも今回はこれで良しとします。見た目的にも見やすくなりましたし。

とりとめのないまとめ

今回の問題は多種類の商品を購入している納品書で、かつ商品名部分の長短でセルの高さが変化する場合にのみ発生しうる問題かと思います。

もし同じシチュエーションで困っている人がいたら根本的には解決していませんが参考にしてみて下さい。