Contents
前提条件
まあ4年手が入っていないものを捕まえてあれこれ言うのもいかんのですが。
https://github.com/thinreports-php/thinreports-php
そもそも当時の所属ではデザイナーがPDF含め画面設計やレイアウトを作っていたのですが、以前にTCPDFを使った際に、デザインが大変だとか、PDFの文字の出力位置が何ピクセルのマージンを空けると言う意思疎通に無茶苦茶難儀したので、エディタでデザインできるThinreportsを採用したわけです。
(ちなみにTCPDFはベースのPDFが読み込めると言うのを知ったのが随分あと)
ところがここで地味に問題が。
https://maya-pg.net/2019/07/08/2019-07-08-202415/
私が前回踏んだ問題点。
テンプレートエディタのバージョンがジェネレータのバージョンと合わない件です。
ループができない…
今回は
こう言うレイアウトにしていて、項目名とその本文の配列をループして出力先のID番号をインクリメントして出力しています。
ところがこれじゃダメだった。本文が長いと切り捨てられて表示されないんだ。そんな長文入れさせるとか想定してなかったもん(´・ω・`)
ならばとエディタでセルの設定を変更。文字を縮小させると最悪ミリ文字になっちゃうのでセルを拡張させたら、
当然下のセルを侵食したorz
https://github.com/thinreports/thinreports-examples/tree/master/list
ここまで読んでなんか変だと思った諸兄はお察しだろう、だったらListレイアウトでいいじゃない。私もそう思い試行するも、
rubyでリストのIDを指定できている記述はあるんだけどPHPでの記述がない。
なんか変だと思いジェネレータのソースを解析。
そもそもリストに対応してる記述がない。orz
力技発動
と言うわけで、このレイアウトに戻り、力技発動。項目名と本文を1カラムと見做し
・本文の文字数と改行文字数を計算し、本文セルの許容行数を上回るっぽかったら、収まり切るまで次以降のカラムへの出力を飛ばす。
・ページを跨いでしまうなら改ページをさせる。
サラッと書いてるようだけど力技なんですよこれ。
と言うわけで、ThinreportsはPHPでも使えないことはないんだけど
・エディタはChromeアプリがいつ切り捨てられるか判らないので何とかする
・ジェネレータはリストが使えないので使わない方向で行く
これらが懸念ですねぇ。
まあ素直にTCPDF使えばいいっちゃいいんでしょうが。