【Thinreports】先般Thinreports for PHPでやりたいことができなかった話

研究
brotiN biswaS at Pexels
この記事は約2分で読めます。

この記事は2年前の記事です。当時の情報、理解に基づいておりますのでご留意ください

前提条件

まあ4年手が入っていないものを捕まえてあれこれ言うのもいかんのですが。

thinreports-php/thinreports-php
An implementation of the Thinreports Generator in PHP. It provides easy and simple way for generating a PDF on pure PHP. - thinreports-php/thinreports-php

そもそも当時の所属ではデザイナーがPDF含め画面設計やレイアウトを作っていたのですが、以前にTCPDFを使った際に、デザインが大変だとか、PDFの文字の出力位置が何ピクセルのマージンを空けると言う意思疎通に無茶苦茶難儀したので、エディタでデザインできるThinreportsを採用したわけです。
(ちなみにTCPDFはベースのPDFが読み込めると言うのを知ったのが随分あと)

ところがここで地味に問題が。

【Thinreports】【急募】Thinreportsの代替になり得るPHPで使えるpdfジェネレータ
困り果てました…はい。tcpdfでいいじゃない、その通りなのですが。これ開発の際にぶち当たったのですが、ThinreportsのPHP版のジェネレータのバージョンが古くここでゲットで...

私が前回踏んだ問題点。
テンプレートエディタのバージョンがジェネレータのバージョンと合わない件です。

ループができない…

今回は

こう言うレイアウトにしていて、項目名とその本文の配列をループして出力先のID番号をインクリメントして出力しています。

ところがこれじゃダメだった。本文が長いと切り捨てられて表示されないんだ。そんな長文入れさせるとか想定してなかったもん(´・ω・`)

ならばとエディタでセルの設定を変更。文字を縮小させると最悪ミリ文字になっちゃうのでセルを拡張させたら、
当然下のセルを侵食したorz

thinreports/thinreports-examples
Code examples for Thinreports. Contribute to thinreports/thinreports-examples development by creating an account on GitHub.

ここまで読んでなんか変だと思った諸兄はお察しだろう、だったらListレイアウトでいいじゃない。私もそう思い試行するも、
rubyでリストのIDを指定できている記述はあるんだけどPHPでの記述がない。

なんか変だと思いジェネレータのソースを解析。
そもそもリストに対応してる記述がない。orz

力技発動

と言うわけで、このレイアウトに戻り、力技発動。項目名と本文を1カラムと見做し

・本文の文字数と改行文字数を計算し、本文セルの許容行数を上回るっぽかったら、収まり切るまで次以降のカラムへの出力を飛ばす。
・ページを跨いでしまうなら改ページをさせる。

サラッと書いてるようだけど力技なんですよこれ。

と言うわけで、ThinreportsはPHPでも使えないことはないんだけど

・エディタはChromeアプリがいつ切り捨てられるか判らないので何とかする
・ジェネレータはリストが使えないので使わない方向で行く

これらが懸念ですねぇ。
まあ素直にTCPDF使えばいいっちゃいいんでしょうが。

コメント

タイトルとURLをコピーしました